私がクラスを持っているとしましょう
class C {
C(int a=10);
};
なぜ私が電話したら
C c;
建設業者C(int =10)
が呼ばれ、私が電話した場合
C c();
デフォルトのコンストラクターが呼び出されますか?これを回避する方法は?コンストラクターのみを実行したいので、デフォルトのコンストラクターをプライベートにしようとしましたが、機能しません。
私がクラスを持っているとしましょう
class C {
C(int a=10);
};
なぜ私が電話したら
C c;
建設業者C(int =10)
が呼ばれ、私が電話した場合
C c();
デフォルトのコンストラクターが呼び出されますか?これを回避する方法は?コンストラクターのみを実行したいので、デフォルトのコンストラクターをプライベートにしようとしましたが、機能しません。
C c();
として解析する必要があります。default-constructorを明示的に呼び出すには、を記述する必要があります。C c = C();
explicit
予期しない瞬間に暗黙の変換が開始されるのを防ぐために、それを作成することを検討する必要があります。コードC c();
はあなたが思っていることをしません:
c
引数を取らず、を返すと呼ばれる関数を宣言しますC
。と同等です
C c(void);
これは、c()
がという名前の関数として解釈されるためc
です。クラスC()
の適切なコンストラクターをトリガーしますC