【发布时间】:2015-07-26 19:12:24
【问题描述】:
我还是 C++ 的新手(一般编程),如果这个问题很愚蠢或被问过很多次,请原谅我。 这是问题..假设在同一个类下有两个对象 A 和 B。
例如
class Fruit{
int apple;
int banana;
fruit(int x, int y){
apple=x;
banana=y;
}
}
Fruit A(1,1);
Fruit B(1,1);
如果我想检查对象 A 的内容是否与对象 B 的内容相同,是否必须比较从 A 到 B 的每个变量,或者
if(Object A == Object B)
return true;
会做这项工作吗?
【问题讨论】:
-
if(Object A == Object B) return true;在编译几率为零的情况下怎么能完成这项工作?您需要实现operator==并比较您想要的任何数据成员是否相等。 -
不完全是一个骗子,但是是的,IMO 它应该被标记为一个,因为在链接的到期问题中已经有一个非常好的解释数据库......
-
@thelink2012 坦率地说,我想不出为什么编译器决定实现一个默认的复制 ctor(即使对于带有指针的类)但顽固地生成一个默认的
operator==的任何充分理由。可以吗? -
@vsoftco Michael Burr 对链接问题的answer 很好地解释了原因,奇怪的是,OP 选择的答案几乎没有给出很好的理由。此外,还有一个提案正在讨论允许
= default用于比较运算符。
标签: c++ comparison