utilisation extraordinaire de table virtuelle de C

1. les classes d'interface A dans le projet


class Father{

    virtual string func1()=0;
};

2. Ensuite, il y a une classe dérivée

class Son : public Father{
    virtual string func1(){return "func1";}

    //新增一个虚函数
    virtual string func2(){return "func2";}
};

3. B est nécessaire dans la méthode d'ingénierie projet de classe Père fun2 A, mais ne déclare pas la méthode virtuelle de classe de base virtuelle comment faire?
1. Ajoutez la déclaration dans une classe de base virtuelle. (Recommandée)
2. (circonstances particulières ne peuvent pas est défini comme étant une méthode virtuelle dans la classe dérivée en utilisant le procédé 1) est ensuite converti en temps à l' aide de l'objet dynamique.

class user{

    void func(){
       Father* base = .....;//从接口中获得对象指针
       Son * imp = dynamic_cast<Son *>(base);
        imp->func2();//是可以的
    }
}

Cette opération est le spectacle. La deuxième option est utilisée lorsque la première option est temporairement indisponible.
Si la méthode de func2 n'ajoute pas virtuel, le compilateur ne sera pas trouvée parce que le symbole de lien échouent.
Lorsqu'il est combiné avec virtuel après la méthode décrite aux points réels sont définis lors de l' exécution.
l'opération proprement dite dans les tables de fonctions virtuelles à l' intérieur des objets est à l'func2 est donc possible.
perfectionner sans passer par la classe de base virtuelle ....

Je suppose que tu aimes

Origine www.cnblogs.com/skyhuangdan/p/12560956.html
conseillé
Classement