私はC++を初めて使いこなし、この言語の基礎を学びます。 「派生クラスオブジェクトをインスタンス化するとコンストラクタ呼び出しの連鎖が始まります」という本でこの行を読んでいます。誰かがこの声明が意味することを説明してもらえますか?この本には説明がありませんでした。助けてください。"派生クラスオブジェクトをインスタンス化する" - C++
答えて
派生クラスは、別のクラスを継承するクラスです。私はあなたが相続に精通していると思います。派生クラスは基本クラスのコンストラクタを継承しますが、それを "オーバーライド"するだけです。したがって、派生クラスからオブジェクトをインスタンス化するときは、最初に基本クラスのコンストラクタが呼び出され、派生クラスのコンストラクタが呼び出されます。
コンストラクタをオーバーライドすることはできません。 –
私はプログラミング言語のオーバーライド用語に言及していませんでしたが、英語の用語はより多く言いました。私はそれを訂正した。 – Kapobajza
それはつまり、あなたは、基本クラスと派生クラスがあるとします。また、
int main()
{
B b;
}
だけではなく、派生クラスのコンストラクタを呼び出しますが、:
struct A
{
A() { std::cout << "constructing A\n"; }
};
struct B : A
{
B() { std::cout << "constructing B\n"; }
};
はその後、派生クラスをインスタンス化します基本クラスの場合:
constructing A
constructing B
この自動的に呼び出されるconstの「チェーン」あなたが持っている基地の数が増えると(つまり、より深いあなたの継承の木が行く)。
オブジェクト階層を定義して、コンストラクタの実行による影響を自分自身で観察できます。ここには工夫した例があります:
#include <iostream>
struct A
{
A(int nValue) {
std::cout << "A: " << nValue << std::endl;
}
};
struct B: public A
{
B(int nValue, double dValue)
: A(nValue) {
std::cout << "B: " << dValue << std::endl;
}
};
struct C: public B
{
C(int nValue, double dValue, char chValue)
: B(nValue, dValue) {
std::cout << "C: " << chValue << std::endl;
}
};
int main()
{
C cClass(5, 4.3, 'R');
return 0;
}
あなたはもっと複雑な階層を想像できますか?他の種類のコンストラクタはどうなりますか?デストラクタはどうですか?あなたはそれのインスタンスを作成
instantiateに何か:
インスタンス化
...
コンクリートのインスタンスで(何かを)表すために(推移)。 Cのようなクラスベースの言語で
++あなたは青写真として働きクラスを、持っている、そしてあなたは、特定のクラスのインスタンスであるオブジェクトを持っています。
たとえば、クラスがA
であるとします。 A
クラスのオブジェクトa
を宣言すると、のオブジェクトA
がインスタンス化されます。
- 1. C#インスタンス化ベースオブジェクト派生オブジェクト
- 2. C++での派生型のインスタンス化
- 3. 基本クラスctorがプライベートである派生クラスオブジェクトをインスタンス化します。
- 4. 派生テンプレートクラスオブジェクトのインスタンス化
- 5. 派生クラスオブジェクトに基本クラスオブジェクトを割り当てる方法は?
- 6. 基本クラスの派生クラスオブジェクトを使用
- 7. 派生クラスカスタムシリアル化
- 8. PHPで基底クラスオブジェクトとして派生クラスオブジェクトを作成する方法
- 9. 派生クラスをインスタンス化するための基底クラスのファクトリメソッド
- 10. XMLシリアル化:属性値に応じて派生クラスをインスタンス化
- 11. C++派生クラステンプレートのインスタンスを作成する方法
- 12. クラスオブジェクトをインスタンス化してリストを初期化する
- 13. 派生クラスオブジェクトにイテレータを宣言するには?
- 14. ベクトルから派生クラスオブジェクトを取得する<Parent*>
- 15. 派生クラスでオブジェクトを作成して基本クラスメンバをインスタンス化する方法
- 16. C++:派生インスタンスを 'extends?'で作成します。ベースインスタンス/実装ダウンキャスト?
- 17. C# - 派生クラス
- 18. 派生クラスC#
- 19. 純粋な抽象クラスと派生型のインスタンス化
- 20. C#で派生クラスを初期化するには?
- 21. C++ベクトル生成関数クラスオブジェクト
- 22. 抽象クラスメソッド - 子クラスオブジェクトをインスタンス化するには?
- 23. のC#:派生クラス
- 24. Cで基本クラスと派生クラスを使用して配列内のオブジェクトをインスタンス化する
- 25. タイプクラスまたはインスタンスの派生変数を制限する
- 26. Json.NetはC#派生クラスへの逆シリアル化を行います。
- 27. Python:PyQtで既にインスタンス化されたクラスオブジェクトにアクセスするには?
- 28. C++ベースクラスポインタを変更する派生クラス
- 29. C++多態性クラスを基底クラスオブジェクトに派生させたクラスを設定する
- 30. 基本クラスポインタを返す派生クラスオブジェクトからメソッドを呼び出す
[これ](http://ideone.com/EN9sDQ)。 – erip
あなたは簡単な言葉でそれを説明することができますか?私はプログラミングにうまくいきません:( –
@AjmalKhan:答えを理解できるように、もう少し時間をかけて勉強したいと思うかもしれません。 –