C++標準では、期待される機能を実際に妨げる可能性がある点まで最適化が可能であることを読んだことがあります。私がこれを言うとき、私は戻り値の最適化について話しています。ここでは、コピーコンストラクタに実際にロジックがあるかもしれませんが、コンパイラは呼び出しを最適化します。C++での最適化に関する質問
これは、これを知らない人がこれに起因するバグを修正するのにかなり時間を費やす可能性があるため、やや悪いことがわかります。
私が知りたいことは、コンパイラの過度の最適化が機能を変更できる他の状況があるかどうかです。
int x = 1;
x = 1;
x = 1;
x = 1;
= 1つのXに最適化されるかもしれません。たとえば、のようなものが
私が持っていると仮定します。これは、おそらくも
class A;
A a = b;
a = b;
a = b;
を最適化していませんか?おそらくない最良の例が、私はは、コンパイラが副作用が目に見えてを変更する場所のポイントに最適化することが許可されている場合のみです...あなたは私が何を意味するか知って
私は近い票に同意しません。これは本当の、答えられる質問です。 –
コピーctorを削除すると、コードのバグが発生し、最初にコピーctorを間違って設計しました。コードは、オブジェクトの数やオブジェクトのコピー/割り当ての頻度に依存してはいけません。 – PlasmaHH
コピーctorのロジックは、オブジェクトをコピーするロジックにする必要があります。それがコピーされない場合、なぜctorロジックをコピーする必要がありますか? –