基本クラスのコンストラクターを呼び出すためのルールは何ですか? 質問する

基本クラスのコンストラクターを呼び出すためのルールは何ですか? 質問する

派生クラスから基本クラスのコンストラクターを呼び出すための C++ の規則は何ですか?

たとえば、Java では、サブクラスのコンストラクターの最初の行でこれを行う必要があることはわかっています (そうしないと、引数なしのスーパー コンストラクターへの暗黙的な呼び出しが想定され、それが欠落している場合はコンパイル エラーが発生します)。

ベストアンサー1

基本クラスのコンストラクタは、引数がない場合には自動的に呼び出されます。引数付きのスーパークラスのコンストラクタを呼び出す場合は、サブクラスのコンストラクタ初期化リストを使用する必要があります。Java とは異なり、C++ は多重継承 (良くも悪くも) をサポートしているため、基本クラスは "super()" ではなく名前で参照する必要があります。

class SuperClass
{
    public:

        SuperClass(int foo)
        {
            // do something with foo
        }
};

class SubClass : public SuperClass
{
    public:

        SubClass(int foo, int bar)
        : SuperClass(foo)    // Call the superclass constructor in the subclass' initialization list.
        {
            // do something with bar
        }
};

コンストラクタの初期化リストに関する詳細情報ここそしてここ

おすすめ記事