lang:cpp:heritage
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
lang:cpp:heritage [2017/11/29 23:22] – Détail sur "Définir une méthode purement virtuelle d'un parent par un autre parent" root | lang:cpp:heritage [2020/03/10 23:07] (Version actuelle) – supprimée root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====Méthodes statiques dans une interface==== | ||
- | Normalement, | ||
- | [[http:// | ||
- | |||
- | L' | ||
- | <code cpp> | ||
- | template < typename T > | ||
- | class StaticInterface | ||
- | { | ||
- | public: | ||
- | StaticInterface() | ||
- | { | ||
- | int(*fooCheck)(int) | ||
- | bool(*barCheck)(bool) = T::bar; | ||
- | } | ||
- | }; | ||
- | </ | ||
- | |||
- | Une implémentation de la classe : | ||
- | <code cpp> | ||
- | class DerivedClass : public StaticInterface< | ||
- | { | ||
- | public: | ||
- | static int foo(int | ||
- | static bool bar(bool param){ return 20; } | ||
- | }; | ||
- | </ | ||
- | |||
- | ====Cast vers un parent d'un héritage multiple==== | ||
- | {{ lang: | ||
- | |||
- | Depuis '' | ||
- | |||
- | Il ne faut surtout pas faire (ci-dessous). Sinon, les méthodes virtuelles (au minimum) appelleront n' | ||
- | <code cpp> | ||
- | Parent2* p = reinterpret_cast< | ||
- | </ | ||
- | |||
- | Il faut faire (ci-dessous). Puis un '' | ||
- | <code cpp> | ||
- | Parent2* p = static_cast< | ||
- | </ | ||
- | |||
- | =====reinterpret_cast sur une classe avec héritage===== | ||
- | Un '' | ||
- | |||
- | Par contre, un '' | ||
- | |||
- | [[https:// | ||
- | |||
- | =====Définir une méthode purement virtuelle d'un parent par un autre parent===== | ||
- | [[https:// | ||
- | |||
- | Il est important que '' | ||
- | |||
- | <code cpp> | ||
- | class Base { | ||
- | public: | ||
- | virtual void test() = 0; | ||
- | }; | ||
- | |||
- | template < | ||
- | class Mixin : virtual T { | ||
- | public: | ||
- | virtual void test() override { /*... do stuff ... */ } | ||
- | }; | ||
- | |||
- | class Example : public virtual Base, public virtual Mixin< | ||
- | /* definitions specific to the Example class _not_including_ | ||
- | a definition of the test() method */ | ||
- | }; | ||
- | </ | ||
- | |||
- | {{ : |
lang/cpp/heritage.1511994145.txt.gz · Dernière modification : 2017/11/29 23:22 de root