1

重複の可能性:
コンストラクターからのc++呼び出しコンストラクター

同じクラスに2つのコンストラクターがあり、コンストラクターの1つが2番目のコンストラクターにデータを送信するようにします。

私はC#でそれを行う方法を知っていますが、私はC ++に不慣れであり、これが次のように可能かどうかはわかりません。

class a 
{

public:
a (int x);
a (int x, int b, char g);

};

a :: a(int x) : this(x, 6, 'h')
{

}
4

2 に答える 2

3

新しい C++11 標準では、この機能がサポートされています (委譲コンストラクターと呼ばれます)。構文は次のようになります。

a::a(int x) : a(x, 6, 'h') {}

コンパイラが新しい標準をサポートしていない場合は、一般的な動作を別の初期化メソッドに抽出し、コンストラクタ本体でそのメソッドを呼び出す必要があります。

于 2012-09-18T20:53:57.630 に答える
0

C ++ 11では可能ですが、以前のバージョンでは不可能です。

一般に、一般的なものを(非仮想)メンバー関数に入れて、コンストラクターから呼び出すことができます。これではすべてを初期化することはできませんが(プリアンブルでの初期化ではなく、コンストラクター本体で行うことのみ)、それでも「何もないよりはまし」である可能性があります。

于 2012-09-18T20:58:05.613 に答える