私のプログラムは、次のRect
ように定義された単純な構造を使用しています
struct Rect {
int x1, y1, x2, y2;
Rect()
: x1(0), y1(0), x2(0), y2(0) { }
Rect(int x1, int y1, int x2, int y2)
: x1(x1), y1(y1), x2(x2), y2(y2) { }
};
コピー/移動コンストラクターまたは代入演算子を定義する必要がありますか、またはそれらを自動生成するためにコンパイラーに頼ることができますか? 問題は、速度と使用上の理由のコンテキストにあります (たとえば、移動コンストラクターはプログラムの実行速度に影響を与える可能性があります)。
コンストラクターとオペレーターは非常に反復的な作業なので、コンパイラーに頼ってそれらを自動的に生成できると便利です。
Rect(const Rect& r)
: x1(r.x1), y1(r.y1), x2(r.x2), y2(r.y2) { }
Rect(Rect&& r)
: x1(r.x1), y1(r.y1), x2(r.x2), y2(r.y2) { }
Rect& operator = (const Rect& r) {
x1 = r.x1;
y1 = r.y1;
x2 = r.x2;
y2 = r.y2;
}