我非常乐于让编译器为您完成尽可能多的工作。编写简单的类时,编译器可以为您提供以下“免费”功能:
默认(空)构造函数
复制构造函数
析构函数
赋值运算符(operator=)
但是它似乎无法为您提供任何比较运算符-例如operator==或operator!=。例如:
class foo
{
public:
std::string str_;
int n_;
};
foo f1; // Works
foo f2(f1); // Works
foo f3;
f3 = f2; // Works
if (f3 == f2) // Fails
{ }
if (f3 != f2) // Fails
{ }
是否有充分的理由呢?为什么进行逐成员比较会是一个问题?显然,如果该类分配了内存,那么您要格外小心,但是对于一个简单的类,编译器肯定可以为您执行此操作吗?
胡说叔叔
跃然一笑
牧羊人nacy
相关分类