C++でオブジェクトを作成するときによく使われるのが、
Thing myThing("asdf");
これの代わりに:
Thing myThing = Thing("asdf");
これは、少なくともテンプレートが含まれていない限り、(gcc を使用して) 機能するようです。ここでの質問は、最初の行は正しいですか? 正しい場合は、それを使用すべきですか?
ベストアンサー1
どちらの行も実際には正しいのですが、微妙に異なることを行います。
最初の行は、形式のコンストラクターを呼び出して、スタック上に新しいオブジェクトを作成しますThing(const char*)
。
2つ目はもう少し複雑です。基本的には次のようになります。
Thing
コンストラクタを使用して型のオブジェクトを作成するThing(const char*)
Thing
コンストラクタを使用して型のオブジェクトを作成するThing(const Thing&)
~Thing()
ステップ1で作成したオブジェクトを呼び出す