デフォルトのコンストラクタでは、vptr(仮想テーブルポインタ)とvtable(仮想テーブル)のみを作成できるのはなぜですか?パラメータコンストラクタができない理由C++でのvptrとvtableの概念
-4
A
答えて
5
最初に、vtableとvptrsはC++言語標準では指定されていません。
これは実装の詳細ですが、現存するすべてのC++実装では、仮想関数ディスパッチを実装するためにこの手法を使用しています。
すべて仮想メンバー機能を持つクラスのコンストラクタは、必ずオブジェクトのvptrを確立します。それなしではうまくいかないでしょう。だから…
”
&hellipになぜパラメータコンストラクタができません。単に間違った前提です。
+3
また、* no *コンストラクタはvtableを作成します。 –
0
実装では、vtables(「Cheers and hth-Alf」で述べたようにかなり一般的な実装の選択肢)を使用すると仮定すると、vtableの作成/投入とコンストラクタの呼び出しは別個の操作です。
ただし、与えられた(非抽象クラスの)すべてのインスタンスは、一度構築されると、同じセットのvtableを持ちます(複数のベースから継承するクラスは複数のvtableを持つことがあります)。オブジェクトがどのように構築されるか(例えば、どのパラメータがコンストラクタに渡されるか、どのコンストラクタが呼び出されるか、など)に応じて、異なるvtableは確かに存在しない。
関連する問題
- 1. セレンとc#の概念
- 2. C++の概念:CRTP
- 3. Cポインタの概念
- 4. C++スレッドの概念
- 5. C++の概念ループ
- 6. C#のプライベートクラスの概念
- 7. C#のベンチマークの概念?
- 8. C++概念ヘルプ、ポインタ
- 9. C++連続シーケンスの概念
- 10. シリアライズの概念 - java - C#
- 11. C++の概念:無効な参照概念
- 12. ピボットテーブルの概念
- 13. インデックスアクセスの概念
- 14. メークファイルの概念
- 15. クラスの概念
- 16. プレーフレームワークの概念
- 17. 概念 - javaとandroid
- 18. C++の仮想関数の概念
- 19. sqlite概念からcoredata概念へ?
- 20. ACLプリンシパルとGrantedAuthorityの概念
- 21. 概念
- 22. CFSでのvruntimeの概念
- 23. UWPでのリージョンとリージョンマネージャの概念
- 24. Windowsワークフローランタイムの概念
- 25. クラスの概念SAPUI5
- 26. LInuxシグナルの概念
- 27. HTMLセキュリティの概念
- 28. JPAリレーションシップマッピングの概念
- 29. UNIXブロックバッファキャッシュの概念
- 30. Infinityループスライダの概念
*「なぜvptr(Virtual Table Pointer)とvtable(Virtual Table)を作成できるのはデフォルトのコンストラクタだけですか?それは意味をなさない。 –
コンストラクタは仮想anythingsを作成しません。型の中に仮想関数を持たせることで型を多相にしますが、それはコンパイル時のことであり、どのようなコンストラクタとは関係ありません。 – xaxxon