Considérez le code suivant: #include #include template struct A { int val = 0; template <class = typename std::enable_if::type> A(int n) : val(n) {}; A(…) { } /* … */ }; struct YES { constexpr static bool value = true; }; struct NO { constexpr static bool value = false; }; int main() { A […]
Une classe avec une (ou plusieurs) fonctions virtuelles pures est abstraite, et elle ne peut pas être utilisée pour créer un nouvel object, elle n’a donc pas de constructeur. Je lis un livre qui donne l’exemple suivant: class Employee { public: Employee(const char*, const char*); ~Employee(); const char* getFirstName() const; const char* getLastName() const; virtual […]
Si je comprends bien, les traits sont les plus proches des interfaces Java et les constructeurs de classes définissent automatiquement les variables. Mais que se passe-t-il si j’ai une classe qui étend un trait et a un constructeur qui définit une variable à partir du trait, donc quelque chose comme: trait Foo { var foo: […]
Comment puis-je prouver par programmation que SsortingngBuilder n’est pas threadsafe? J’ai essayé ceci, mais ça ne marche pas: public class Threadsafe { public static void main(Ssortingng[] args) throws InterruptedException { long startdate = System.currentTimeMillis(); MyThread1 mt1 = new MyThread1(); Thread t = new Thread(mt1); MyThread2 mt2 = new MyThread2(); Thread t0 = new Thread(mt2); t.start(); […]
J’ai les définitions de classe suivantes en c ++: struct Foo { int x; char array[24]; short* y; }; class Bar { Bar(); int x; Foo foo; }; et voudrait initialiser la structure “foo” (avec tous ses membres) à zéro dans l’initialiseur de la classe Bar. Est-ce que cela peut être fait de cette façon: […]
Ce que je veux c’est: obj = Foo.new(0) # => nil or false Cela ne fonctionne pas: class Foo def initialize(val) return nil if val == 0 end end Je sais qu’en C / C ++ / Java / C #, nous ne pouvons pas retourner une valeur dans un constructeur. Mais je me demande […]
En C #, je peux initialiser une liste en utilisant la syntaxe suivante. List intList= new List() { 1, 2, 3 }; J’aimerais savoir comment fonctionne cette syntaxe {} et si elle a un nom. Il y a un constructeur qui prend un IEnumerable , vous pouvez l’appeler. List intList= new List(new int[]{ 1, 2, […]
class A private def initialize puts “wtf?” end end A.new #still works and calls initialize et class A private def self.new super.new end end ne fonctionne pas tout à fait Alors, quelle est la bonne façon? Je veux créer un new privé et l’appeler via une méthode d’usine.
Je remarque que dans l’API Java Reflection, il existe deux méthodes différentes pour appeler des constructeurs: la méthode getDeclaredConstructors / getConstructors . Bien que les documents Java soient légèrement différents ( getDeclaredConstructors semble impliquer qu’il renvoie TOUS les constructeurs, plutôt que des constructeurs publics), il n’est pas clair pourquoi l’API prend explicitement en charge ces […]
class C { T a; public: C(T a): a(a) {;} }; Est-ce légal?