私は本当に答えを知っておくべき基本的なC++の質問があります。C++でのクラスオブジェクトの作成
A
のコンストラクタを持つクラスがあります。A(int a)
A test_obj(4);
と
A test_obj = A(4);
:違いは何ですか?
私は一般的に後者の構文を使用しますが、私の信頼できるC++のプライマーで無関係なものを調べた後、私はそれらが一般的に前者を使用することに気付きました。これらの2つの違いは、組み込みタイプ(例えば、int a(6)
対int a = 6
)のコンテキストでよく説明されていますが、この場合は同等です。
しかし、ユーザー定義クラスの場合、オブジェクトを同等に定義する2つの方法はありますか?または、後者のオプションの最初のデフォルトはtest_obj
を構築し、次にA
のコピーコンストラクタを使用してA(4)
の戻り値をtest_obj
に割り当てますか?この2番目の可能性がある場合、大きなクラスの2つのアプローチの間にパフォーマンスの違いがあると思います。
この質問はインターネット上のどこかで答えられていると確信していますが、最初のオプションとnew
との違いを質問することなく効果的に検索することはできませんでした。
*私は一般的に後者の構文*を使用します - なぜですか?経験豊富なC++プログラマーがその構文を目的に使用しているのを見つけるのは難しいでしょう。 – PaulMcKenzie
@PaulMcKenzie特に良い理由はありません。私は変わることに戸惑います。私はこれまでこれまで考えなかった。 –
@PaulMcKenzie元の質問に戻って、違いは何ですか? – jacknad