samedi 10 mars 2012

Aller chercher la classe de base

Un test de C++, plutôt moyen au demeurant, m'a permis de découvrir une syntaxe pour appeler la fonction de base sur un type dérivé:


#include

class Base
{
public:
virtual ~Base() {}
virtual void f() { std::cout << "Base" << std::endl; }
};

class Derived : public Base
{
public:
virtual void f() { std::cout << "Derived" << std::endl; }
};

int main()
{
Derived d;
d.Base::f();
}

Au final, cette syntaxe est plutôt logique: depuis une méthode dérivée, on peut en effet appeler une méthode de base avec Base::f(), c'est à dire this->Base::f(). Donc, pourquoi pas sur un autre objet que this?

Aucun commentaire: