15

基本クラスがあるとします:

class baseClass  
{  
  public:  
baseClass() { };

};

そして派生クラス:

class derClass : public baseClass
    {  
      public:  
    derClass() { };

    };

derClassのコンストラクターのインスタンスを作成すると 、baseClassが呼び出されます。どうすればこれを防ぐことができますか?

4

3 に答える 3

20

追加の空のコンストラクターを作成します。

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) { };

};
于 2010-10-31T21:18:58.360 に答える
8

基本クラス インスタンスは、派生クラス インスタンスの不可欠な部分です。派生クラス インスタンスの構築に成功した場合は、定義により、すべての基本クラスとメンバー オブジェクトを構築する必要があります。そうしないと、派生オブジェクトの構築が失敗します。基本クラスのインスタンスを構築するには、そのコンストラクターの 1 つを呼び出す必要があります。

これは、C++ で継承がどのように機能するかの基本です。

于 2010-10-31T21:14:04.210 に答える