Considérez le code suivant: trait Animal { fn make_sound(&self) -> Ssortingng; } struct Cat; impl Animal for Cat { fn make_sound(&self) -> Ssortingng { “meow”.to_ssortingng() } } struct Dog; impl Animal for Dog { fn make_sound(&self) -> Ssortingng { “woof”.to_ssortingng() } } fn main () { let dog: Dog = Dog; let cat: Cat = […]
Je suis récemment tombé sur cette entrée dans le blog de test Google sur les directives pour écrire plus de code à tester . J’étais d’accord avec l’auteur jusqu’à présent: Favoriser le polymorphism par rapport aux conditions: Si vous voyez une déclaration de changement, vous devriez penser à des polymorphisms. Si vous voyez la même […]
Devez-vous passer à supprimer le même pointeur renvoyé par new ou pouvez-vous lui passer un pointeur vers l’un des types de base de la classe? Par exemple: class Base { public: virtual ~Base(); … }; class IFoo { public: virtual ~IFoo() {} virtual void DoSomething() = 0; }; class Bar : public Base, public IFoo […]
Je voudrais stocker des instances de plusieurs classes dans un vecteur. Comme toutes les classes héritent de la même classe de base, cela devrait être possible. Imaginez ce programme: #include #include using namespace std; class Base { public: virtual void identify () { cout << "BASE" << endl; } }; class Derived: public Base { […]
Disons que nous avons: Class Base { virtual void f(){g();}; virtual void g(){//Do some Base related code;} }; Class Derived : public Base { virtual void f(){Base::f();}; virtual void g(){//Do some Derived related code}; }; int main() { Base *pBase = new Derived; pBase->f(); return 0; } Quel g() sera appelé depuis Base::f() ? Base::g() […]
Je tente de travailler à travers un tutoriel de Programmer Bruce qui est censé permettre la désérialisation du JSON polymorphe. La liste complète peut être trouvée ici Tutoriels Bruce Programmer (Great stuff btw) J’ai parcouru les cinq premiers sans problème, mais je me suis heurté au dernier problème (exemple 6), ce qui est évidemment le […]
Pourquoi le compilateur affiche-t-il un message d’erreur lorsque vous réduisez la visibilité d’une méthode tout en la remplaçant dans la sous-classe?
Comme nous le soaps tous, certaines langues ont la notion d’interfaces. Ceci est Java: public interface Testable { void test(); } Comment puis-je y parvenir en C ++ (ou C ++ 11) de la manière la plus compacte et avec peu de bruit de code? J’apprécierais une solution qui n’aurait pas besoin d’une définition séparée […]
J’ai trouvé des questions déjà sur SO avec un titre similaire, mais quand j’ai lu les réponses, elles se concentraient sur différentes parties de la question qui étaient vraiment spécifiques (par exemple, STL / conteneurs). Quelqu’un pourrait-il s’il vous plaît me montrer pourquoi vous devez utiliser des pointeurs / références pour implémenter le polymorphism? Je […]
Quelle est exactement la différence entre ceux-ci? Je pense que je comprends à quel point les types existentiels fonctionnent, ils sont comme avoir une classe de base dans OO sans avoir à couler. Comment les types universels sont-ils différents?