コンストラクターに引数が指定されていない場合、デフォルト値が変数に与えられるようにするにはどうすればよいですか?
例えば:
class A {
A(int x, int y)
}
int main() {
A(4);
}
その例では、yに値を渡していません。たとえば、引数が指定されていないため、yのデフォルト値が0になるようにするにはどうすればよいですか?
コンストラクターに引数が指定されていない場合、デフォルト値が変数に与えられるようにするにはどうすればよいですか?
例えば:
class A {
A(int x, int y)
}
int main() {
A(4);
}
その例では、yに値を渡していません。たとえば、引数が指定されていないため、yのデフォルト値が0になるようにするにはどうすればよいですか?
デフォルトの引数を使用します。パラメーターはデフォルト値を右から左に読み取るだけであるという制限があるため、デフォルト設定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}
渡す可能性を得まし5
たA
。これらの暗黙的な変換を許可する前によく考えて、それらが必要であることがわかるまでexplicit
、コンストラクター シグネチャの前に置いてそれらを無効にします。