基本クラスがあるとします:
class baseClass
{
public:
baseClass() { };
};
そして派生クラス:
class derClass : public baseClass
{
public:
derClass() { };
};
derClass
のコンストラクターのインスタンスを作成すると 、baseClass
が呼び出されます。どうすればこれを防ぐことができますか?
基本クラスがあるとします:
class baseClass
{
public:
baseClass() { };
};
そして派生クラス:
class derClass : public baseClass
{
public:
derClass() { };
};
derClass
のコンストラクターのインスタンスを作成すると 、baseClass
が呼び出されます。どうすればこれを防ぐことができますか?
追加の空のコンストラクターを作成します。
struct noprapere_tag {};
class baseClass
{
public:
baseClass() : x (5), y(6) { };
baseClass(noprapere_tag) { }; // nothing to do
protected:
int x;
int y;
};
class derClass : public baseClass
{
public:
derClass() : baseClass (noprapere_tag) { };
};
基本クラス インスタンスは、派生クラス インスタンスの不可欠な部分です。派生クラス インスタンスの構築に成功した場合は、定義により、すべての基本クラスとメンバー オブジェクトを構築する必要があります。そうしないと、派生オブジェクトの構築が失敗します。基本クラスのインスタンスを構築するには、そのコンストラクターの 1 つを呼び出す必要があります。
これは、C++ で継承がどのように機能するかの基本です。