考虑以下类定义
class Pumpkin {
public:
Pumpkin(const Pumpkin & other);
~Pumpkin();
// more public member functions
private:
double radius;
// more private member variables
};
还必须为Pumpkin类实现以下哪些功能才能使其正常运行? (a)没有参数构造函数 (b)运营商= (c)operator()(d)setRadius (e)运营商删除
答案 0 :(得分:1)
还必须为Pumpkin类实现以下哪些功能才能使其正常运行?
嗯,当然是你在课堂上宣布的那些。根据你所展示的内容,你肯定需要定义两者:
Pumpkin(const Pumpkin & other);
~Pumpkin();
我认为没有任何特别理由可以关注Rule of Three,因为您只向我们展示了无害double
。
但,如果您执行任何RAII或您的复制构造函数和/或析构函数非平凡,那可能就是这种情况。在这种情况下,您还必须定义:
Pumpkin& operator=(const Pumpkin&);
如果您使用的是C ++ 11,那么定义它也是一个好主意:
Pumpkin(Pumpkin&&);
Pumpkin& operator=(Pumpkin&&);
分别称为 move-constructor 和 move-assignment 。