我有一个函数可以按每个属性比较对象以查看它们是否相同。但我只是想知道,通过地址比较对象而不是检查它们是否是完全相同的对象会更好吗?
编辑:请注意:如果您希望函数正常工作,则不能将值(对象)传递给函数。您需要传递(可能是常量)引用或指针。
如果您只想知道引用或指针是否都指向同一个对象(不是相同的对象,而是相同的对象),那么比较地址确实是正确的做法:
bool AreEqual(const Class& a, const Class& b)
{
return &a == &b;
}
请注意,&
运算符可能会重载Class
上面的类。自 C++11 起函数模板std::addressof
可以用来应对这个事实:
#include <memory> //std::addressof
bool AreEqual(const Class& a, const Class& b)
{
return std::addressof(a) == std::addressof(b);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)