-5
Class A{
  public:  
  int variable;
  A(): variable(4) {}
};

class B : public A{

  void  function(){

    A test = new A()
  }
};

クラス B で new A を呼び出すと、A:A() への未定義の参照が与えられます。この通話は合法ですか?

4

1 に答える 1

1

いいえ -- に対してコンストラクタを 1 つだけ定義しましたがA、これは非公開です。Aしたがって、のフレンドでない限り、を構築することはできませんA。または、(たとえば) の静的メンバーを定義Aしてインスタンスを作成することもできます。

new Aまた、 (それ自体では)何の役にも立たないことにも注意してください(実際、現在の状態では、セミコロンがないとコンパイルすらできません)。newオブジェクトのアドレスを生成します。それを実際に使用するには、通常、そのアドレスをポインターに保存します。

于 2013-05-22T22:31:18.917 に答える