この質問は、私が抽象クラスを作成するときに純粋仮想関数を派生クラスに実装しなければならないという条件であるため、その情報が必要であると思ったサイトで尋ねられました。ベースには、それらから派生したクラスに関する情報がありますか?
答えて
基本クラスには、そのサブクラスに関する情報がありません。 サブクラスには、基本クラスに関する情報があります。
あなたは情報の意味に依存します。 [CRTP](https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)を使用すると、基本クラスは派生クラスのすべてのパブリックメンバーにアクセスできます。 – NathanOliver
@ NathanOliverはい、私はRegularを意味します。申し訳ありません指定しないでください。 –
@NathanOliver私はCRTPについて知らなかった。とても興味深い! –
基本クラス内に仮想関数を宣言した場合 コンパイルでは、基本クラス内でジャンプリストが生成され、その基本クラスから派生して関数を宣言すると言うことができます仮想基底クラス関数と同じ宣言を持つコンパイラは、関数のアドレスを派生クラスから基底クラスのそのジャムリストに置きます。 もちろんこれは派生クラスによって行われます。
継承チェーンがある場合、最後にインスタンス化されたクラスはその関数のアドレスを配置します。そして、基底クラスが関数を呼び出そうとすると、ジャンプリストを使用して正しい関数にジャンプします。
- 1. Android.Content.ActivityNotFoundException(アクティビティから派生したクラスから派生したクラス)
- 2. 同じクラスから派生したクラスから派生したC++サブクラス
- 3. ベースからのキャスティングは派生しましたか?
- 4. インターフェイスから派生した別のクラスの中にあるインターフェイスから派生したクラスをインスタンシエートする...ちょっと調べるためには
- 5. 他の派生クラスから派生クラスメソッドにアクセスする方法
- 6. ブーストから派生したクラスから派生したクラスでコピーが自動的に禁止されていますか?たとえば
- 7. 別の派生クラスから他の派生クラスにアクセスするにはどうすればよいですか?
- 8. 他の派生クラスから派生クラスのメンバーにアクセスするにはどうすればよいですか?
- 9. コンクリートクラスから派生した抽象クラス
- 10. System.Windows.Media.Media3D.Matrix3Dに関する情報はどこにありますか?
- 11. アンドロイドブラウザのJavaScriptから得られる情報はありますか。
- 12. 派生型のキー...しかしそれはありません
- 13. CoreDataがシミュレータからデバイスにデバイス情報がありません
- 14. Windowsプロセスのダンプハンドルとそれらに関する追加情報
- 15. 構造体から派生したクラスの仮想関数
- 16. 派生クラスからベースクラス
- 17. ジャンゴ:からrequest.userから派生クラス
- 18. 派生クラスからクラスを派生させる
- 19. SQLiteOpenHelperから派生したクラスが巨大になっています
- 20. C#でEntity Frameworkによって生成されたクラスから派生する
- 21. Entity Framework 4.1のNotMappedクラスからEntityクラスを派生します。
- 22. 基本クラスから派生したインスタンスを保存する
- 23. 辞書から派生したクラスに対してforeachを有効にする
- 24. 多型:基本クラスの保護されたメンバーから派生しますか?
- 25. ベースクラスコンテナから派生クラスを抽出するには?
- 26. 派生クラスのコンストラクタは、イニシャライザのリストでベースのデフォルトコンストラクタを使用する必要がありますか?ここ
- 27. 派生クラスからの基底クラス関数のアクセス
- 28. std :: exceptionから派生しました
- 29. xsd.exeから派生したxsd.exeからXMLをデシリアライズする際にエラーが発生しました。
- 30. MapViewを使用したTabBarアプリ(情報をダウンロードする必要があり、その情報をMapViewに表示する必要がありますか?))
CRTPまたは通常の継承を使用していますか? – NathanOliver
親クラスは子クラスについて何も知る必要はありませんが、*コンパイラ*はそれをすべて知っていれば十分です。 –