我们只是在这里讨论了关于显式声明特殊成员函数的讨论。这样做是不好的做法吗?我的意思是:编译器生成的版本执行成员操作。如果我实现完全相同的方法(考虑三/五的规则),除了它需要更多的工作,这是一个不好的做法吗?
当然,可以说它是多余的并且使代码库膨胀。其他人声称具有显式声明可以简化调试(例如,每当复制对象时我都可以设置断点)。
那么写一个像Explicit
(下面,基于维基页面的例子)这样的类是不好的做法还是只是个人品味?
class Explicit {
string msg;
public:
Explicit() : msg("") {}
Explicit(const Explicit& other) : msg(other.msg) {}
Explicit& operator=(const Explicit& other) {
if (this != &other) { msg = other.msg; }
return *this;
}
~Explicit() {}
};