0

コンストラクターに引数が指定されていない場合、デフォルト値が変数に与えられるようにするにはどうすればよいですか?

例えば:

class A { 

A(int x, int y)

}

int main() { 
 A(4);
}

その例では、yに値を渡していません。たとえば、引数が指定されていないため、yのデフォルト値が0になるようにするにはどうすればよいですか?

4

3 に答える 3

4

デフォルトの引数を使用します。パラメーターはデフォルト値を右から左に読み取るだけであるという制限があるため、デフォルト設定xなしでデフォルト設定することyはオプションではありません。

A(int x, int y = 0) {}

もう 1 つの選択肢は、オーバーロードを作成することです。

A(int x, int y) {}
A(int x) {/*use 0 instead of y*/}

2 番目は、より複雑な組み合わせの委任コンストラクターで特にうまく機能します。

A(int x, int y) {/*do main work*/}
A(int x) : A(x, 0) {/*this is run after the other constructor*/}

ただし、これらのいずれかを行うとすぐに、クラスへの暗黙的な変換の方が簡単であることに注意してください。唯一の可能な の代わりに、として{6, 10}渡す可能性を得まし5A。これらの暗黙的な変換を許可する前によく考えて、それらが必要であることがわかるまでexplicit、コンストラクター シグネチャの前に置いてそれらを無効にします。

于 2013-05-25T17:53:10.957 に答える