1.そこプロジェクトにおけるAインタフェースクラス
class Father{
virtual string func1()=0;
};
2.その後、派生クラスがあります
class Son : public Father{
virtual string func1(){return "func1";}
//新增一个虚函数
virtual string func2(){return "func2";}
};
3. Bは、工学的手法父fun2クラスAプロジェクトで必要とされるが、どのように行うには、仮想基底クラスの仮想メソッドを宣言しないのですか?
1.仮想基底クラスで宣言を追加します。(推奨)
2.(特別な事情がすることはできません次いで、動的サブクラスオブジェクトを使用して時間に換算される)方法1を使用して、派生クラスで仮想メソッドとして定義されます。
class user{
void func(){
Father* base = .....;//从接口中获得对象指针
Son * imp = dynamic_cast<Son *>(base);
imp->func2();//是可以的
}
}
この操作はショーです。最初のオプションが一時的に利用できないときに、第2のオプションが使用されている。
func2の方法は、仮想追加していない場合は、リンクシンボルが失敗しているため、コンパイラが発見されることはありません。
仮想と組み合わせると、実際の点の後に記載した方法は、実行時に定義されている。
オブジェクト内の仮想関数テーブル内の実際の操作は非常に関数func2であることが可能である。
仮想基本クラスをバイパス完成....