我的程序使用一个简单的结构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;
}