私がクラスを持っているとしましょう
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