C ++ Implémentation de la fonction virtuelle?

Si je l'ai dans le C++:

class A {
    private: virtual int myfunction(void) {return 1;}
}

class B: public A {
    private: virtual int myfunction(void) {return 2;}
}

Alors si je supprime virtual de la myfunction définition dans class Bcela veut dire que si j'avais un class C basé sur class Bque je ne pouvais pas remplacer la myfunction car il serait compilé statiquement?

Aussi, je suis confus quant à ce qui se passe quand vous passez autour publics et privés d'ici. Si je change la définition de myfunction dans class B publics (et celui de class A reste privé), est-ce une sorte de grave erreur que je ne devrais pas le faire? Je pense que les fonctions virtuelles besoin de garder le même type de sorte que c'est illégal, mais s'il vous plaît laissez savoir si c'est faux.

Merci!

source d'informationauteur ash | 2009-11-05