Gor*_*pik 19
编辑:注意:如果您希望它正常工作,您不能将值(对象)传递给您的函数.您需要传递(可能是const)引用或指针.
如果你只是想知道引用或指针是指向同一个对象(不是相同的对象,而是相同的对象),那么比较地址是正确的,事实上:
bool AreEqual(const Class& a, const Class& b)
{
return &a == &b;
}
Run Code Online (Sandbox Code Playgroud)
请注意,上面&
的Class
类可能会超载运算符.从C++ 11开始,函数模板std::addressof
可用于处理这个事实:
#include <memory> //std::addressof
bool AreEqual(const Class& a, const Class& b)
{
return std::addressof(a) == std::addressof(b);
}
Run Code Online (Sandbox Code Playgroud)
Nic*_*tti 16
您应该决定您的课程是否支持等同或身份.等价是一种典型的价值属性,例如数字.身份是实体的典型属性,例如人.
等价通常通过比较一个类的数据成员来确定; 比较地址是检查身份的合理方式.