考虑一个点类,其声明如下:
// Point.h
class Point {
public:
Point(); // Default constructor
Point(const Point & p); // Copy constructor
Point & operator=(Point source); // Copy assignment operator, needs implemented
~Point(); // Destructor
// ...
private:
double m_x; // X coordinate
double m_y; // Y coordinate
};
对于作业,我唯一需要实现的是复制赋值运算符。
如何做到这一点的规范答案是copy-and-swap idiom。
使用交换功能进行复制分配解决了一个问题并创建了另一个问题(如何实现交换功能)。
虽然我觉得不需要提供交换功能,但我不知道如何最好地实现交换。是专精std::swap
吗?我还不知道命名空间和模板专业化。
形式上,我的问题有两个:
- 拷贝赋值应该如何实现?如果它使用交换功能,我应该如何实现它?
- 在野外,我会不会根本不写三巨头成员,因为
Point
班级只是两个数字?编译器会正确且最佳地编写操作吗?