class BaseClass
{
virtual void g()
{
cout<<"BaseClass:g()"<<endl;
}
private:
virtual void f()
{
cout<<"BaseClass:f()"<<endl;
}
};
class DeriveClass:public BaseClass
{
virtual void g()
{
cout<<"DeriveClass:g()"<<endl;
}
private:
virtual void h()
{
cout<<"DeriveClass:h()"<<endl;
}
};
typedef void (*Fun)(void) ;
int _tmain(int argc, _TCHAR* argv[])
{
DeriveClass b;
Fun pFun;
for(int i = 0; i<3; ++i)//why the variable is 3?
{
pFun = (Fun)*((int*)*(int*)(&b)+i);// I don't know this?
pFun();
}
system("pause");
return 0;
}
0
A
答えて
0
これは、VTABLEについて理解しているかどうかを確認するための質問です。
このチュートリアルhttp://www.learncpp.com/cpp-tutorial/125-the-virtual-table/はこのサンプルコードを使用するだけでなく、その解答を説明します。
1
私の見解は、 "C"コーディング技術を "C++"指向のオブジェクトプログラミングで使用することは非常に汚いことです。
クラスのメンバーにアクセスする必要がある場合は、それをpublicとマークします。
_tmain関数は、メソッドポインタを介して3つのメソッドにアクセスしています。
+0
インターネットからダウンロードしたインタビューの質問です。私はC++に関する仕事を探しています。 –
+0
これはあなたを助けるはずです:http://www.newty.de/fpt/index.html –
関連する問題
- 1. プライベート仮想関数
- 2. 仮想基本クラスから継承する仮想関数の「仮想サンク」とは何ですか?
- 3. フォース呼び出し、基本クラスの仮想関数
- 4. 仮想関数は、基本クラスの同じ名前の非仮想関数をオーバーライドしますか?
- 5. 基本クラス(仮想テーブル/仮想コスト)での仮想最終機能のコスト
- 6. テンプレートベースの派生クラスを持つ基本クラスの純粋仮想関数
- 7. 基本クラスへの参照を通じて仮想関数を呼び出す
- 8. C++ - エラー:基本クラス仮想関数の不完全型へのメンバアクセス
- 9. プライベート基本クラスのエラーenable_shared_from_this
- 10. 仮想関数内の基底クラスを変更する
- 11. ironrubyの基本クラスのプロパティ(変数)にアクセスする方法は?
- 12. 多相基本クラス(仮想関数を含む)でアクセスしたときの配列要素の型
- 13. ぼんやりした仮想ネットワーク内のプライベートVMにアクセスする方法
- 14. 抽象基本クラスのコールバック関数と仮想関数の使用の違いは何ですか?
- 15. 仮想関数オーバーライド仮想関数
- 16. 他の基本クラスに仮想関数を実装できるようにする
- 17. C++の仮想クラスの基本的な質問
- 18. すべての関数を基本クラスに仮想宣言する必要がありますか?
- 19. 基本クラスctor内から仮想メソッドを呼び出す
- 20. 派生クラスのメンバー関数は、基本クラスから仮想を継承していますか?
- 21. 親クラスの親の仮想関数
- 22. 子クラスの仮想関数のオーバーロード
- 23. 仮想関数の配置方法は?
- 24. 派生クラスで仮想関数を実装するときのアクセス基底クラスのプライベートメンバー
- 25. 継承クラスのC++仮想関数
- 26. はCefRequesthandlerクラスの仮想関数C++
- 27. 派生クラスの関数へのポインタによる基本仮想メソッドの呼び出し
- 28. 子クラスの基本クラス関数へのアクセス
- 29. PostgreSQLのVPD(仮想プライベート・データベース)
- 30. PyCharmの仮想環境パッケージ内の関数にアクセスする方法
これを行う目的は何ですか? –