私はどこかで読んだ(今はソースを見つけることができない)
MyClass *p1 = new MyClass;
と
MyClass *p2 = new MyClass();
MyClass
デフォルトのコンストラクターを提供する場合、基本的に同等です。コンパイラは私がやりたいことを理解し、空の括弧を追加します。
もしそうなら、なぜ私は書くことが許されないのですか
throw MyException;
しかし、使用する必要があります
throw MyException();
?(はい、行頭の疑問符です。)
さらに混乱を加えるために、C ++ FAQは、2番目のユースケース(new MyClass()
)がコンストラクターを呼び出さず、代わりにで定義された関数を呼び出すことを提案していoperator()
ます。