は、我々は、以下の操作があるとします。代入演算子を使ってオブジェクトを返すのはどうでしょうか?
Object a = b.copy();
copy()
は基本的にメソッドのコピーオブジェクトであり、そのコピーを返します。
Object copy()
{
Object copied_Object;
/..do the copy../
return copied_Object;
}
は、最初に私はリターンが割り当てoperator =
をトリガーと操作の右側のフィールドに 結果を置くだろうと思ったが、それは実際にはコピーコンストラクタがアクティブになることが判明した後、オブジェクトが関数内に作成します破壊される。これは私が知っているものです。
私の質問は、Object a = b.copy();
が実行されたときに何が起こるかを段階的に説明できますか?
1.オブジェクトa = b.copy();は割り当てではありません。 2.なぜ、これを返さないのですか?コピーコンストラクタは、その理由のためにその名前を持ちます。 – LogicStuff
コピーエリッションも発生する可能性があります(C++では17となります)。 – Jarod42
私はちょうどそれがコンパイルされたときに起こるかと尋ねているので、割り当てはトリガされません。オブジェクトa = bを書くときにトリガされないので、意味があると思います。 –