0

これはよくわからない基本的な概念であり、より明確に理解する必要があります。私の質問は、派生クラスにコンストラクターがない場合でも、基本クラスのコンストラクターが実行されるのですか? または、基本コンストラクターの呼び出しは、派生コンストラクターに関連していませんか? 説明してくれてありがとう!

4

7 に答える 7

0

オブジェクトを作成するたびに、そのコンストラクターが実行されます。オブジェクトを破棄するたびに、そのデストラクタが実行されます。オブジェクトがメンバー、ベース、またはその他のものであるかどうかに関係なく。これは、オブジェクト指向プログラミングの基本です。

于 2013-11-09T12:00:56.187 に答える
0

はい。定義されていない場合、コンパイラはあなたのためにそれを思い起こさせ、それを使用します

于 2013-11-09T09:35:16.813 に答える
0

自分でコンストラクタを定義しなくても、デフォルトのコンストラクタがコンパイラによって追加されます。

デフォルトでは、派生クラス コンストラクターは、派生クラス コンストラクターの本体を実行する前に、基本クラスのデフォルト コンストラクターを呼び出します。

必要に応じて、派生クラスのコンストラクターの初期化リストで基本クラスのコンストラクターを呼び出すことができます。

ここに例があります。

class Base
{
public:
    Base(int nValue)
    {
        //body of the constructor
    }
};

class Derived: public Base
{
public:

    Derived(int mnValue) :Base(mnValue)
    {
        //body of the constructor
    }
};

上記の例では、派生クラスは、派生クラスのコンストラクターの初期化リストで明示的に Base クラスのコンストラクターを呼び出します。

詳細については、を参照してください。

http://www.learncpp.com/cpp-tutorial/113-order-of-construction-of-derived-classes/

http://www.learncpp.com/cpp-tutorial/114-constructors-and-initialization-of-derived-classes/

于 2013-11-09T10:21:08.987 に答える
0

コンストラクターは、すべての基本クラスに対して常に実行されます。これには、コンパイラによって生成された既定のコンストラクターが含まれます。基本クラスのコンストラクターを呼び出すことができない場合は、常にエラー メッセージが表示されます。

于 2013-11-09T09:33:26.750 に答える
0

はい、デフォルトでは、基本クラスのデフォルト コンストラクターが実行されます。

これはすべての派生クラス コンストラクターに適用されることに注意してください。別のコンストラクターを指定しない限り、それらはすべて既定のコンストラクターを呼び出します。つまり、派生クラス (ユーザー定義またはコンパイラによって生成された) のコピー コンストラクターは、既定で、既定の基底クラスのコンストラクターを呼び出します。

于 2013-11-09T09:33:34.183 に答える
0

一般的に言えば、基本クラスのコンストラクターは、派生クラスのコンストラクターの前に呼び出されます。

これを説明する良いSOスレッドがあります:基本クラスのコンストラクターとデストラクタは、派生したもので呼び出されますか

于 2013-11-09T09:33:36.890 に答える
0

はい確かに、派生クラスにコンストラクターがない場合でも、基本クラスのコンストラクターが実行されます

于 2013-11-09T09:34:04.903 に答える