Articles of polymorphism

Vecteur d’objects appartenant à un trait

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 = […]

Le polymorphism ou les conditions favorisent-ils une meilleure conception?

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 […]

La suppression fonctionne-t-elle avec des pointeurs vers la classe de base?

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 […]

Stocker les objects de classe dérivés dans les variables de classe de base

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 { […]

appel de fonction virtuelle de la classe de 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() […]

Désérialiser JSON avec Jackson en types polymorphes – Un exemple complet me donne une erreur de compilation

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 ne pouvez-vous pas réduire la visibilité d’une méthode dans une sous-classe Java?

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?

Meilleur moyen de déclarer une interface en C ++ 11

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 […]

Pourquoi le polymorphism ne fonctionne-t-il pas sans pointeurs / références?

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 […]

Types quantifiés existentiels vs universels dans Haskell

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?