1. ホーム
  2. c++

[解決済み] ベースクラスのコンストラクタはどのように呼び出すのですか?

2023-06-17 18:54:35

質問

最近、Javaでプログラミングをすることが多くなりました。そこでは、継承したクラスを呼ぶときに super(). (というのがあります(皆さんもご存知でしょう)。

今、私はC++でクラスを持っていて、それはいくつかの引数を取るデフォルトのコンストラクタを持っています。例を挙げます。

class BaseClass {
public:
    BaseClass(char *name); .... 

このクラスを継承すると、適切なデフォルトコンストラクタがないという警告が出ます。そこで、次のようなものはないでしょうか。 super() のようなものがあるのでしょうか。それとも、すべての変数を初期化する関数を定義しなければならないのでしょうか。

どのように解決するのですか?

サブクラスのコンストラクタのイニシャライザリストで行うのです。

class Foo : public BaseClass {
public:
    Foo() : BaseClass("asdf") {}
};

引数を取るベースクラスのコンストラクタは、どのメンバも初期化される前にそこで呼び出されなければなりません。