【发布时间】:2018-11-05 18:39:23
【问题描述】:
当实现这样的抽象类时:
class Base
{
public:
virtual ~Base() = default;
virtual void foo() = 0;
};
这个接口是否必须遵守五规则,即我是否必须添加复制构造函数、复制赋值运算符、移动构造函数和移动赋值运算符?
我认为Base 类型的实例由于纯虚成员函数而无法实例化,因此为其他特殊成员函数提供默认实现可能没有实际用途。
是否有任何用例/示例需要我提供其他特殊成员函数?
【问题讨论】:
-
你将如何实现那些构造函数/操作符? :P
-
你
defaulted 你的析构函数,意味着你告诉编译器生成一个。应该和你什么都不做一样。 -
@KillzoneKid 但我猜其意图是析构函数是虚拟的。
-
@juanchopanza 是的,我的意思是它不应该影响你如何使用三、五等规则。
-
在这种情况下应该尊重
Rule of zero。
标签: c++ rule-of-three