我试图在名为Set的简单C++类上重载=运算符,该类包含一个动态整数数组。对于=运算符,我首先要检查自我分配,因此我想比较2个指针以查看它们是否具有相同的内存地址。这是代码:
Set& Set::operator=(const Set& setEqual)
{
//first check for self assignment
if(setEqual == this*)
cout << "this is self assignment";
}
吐出的错误是
error: expected primary-expression before ')' token
我相信我又一次对指针产生了误解,所以如果有人可以将我指向(正确!)正确的方向,我将不胜感激。
最佳答案
要检测自我分配,您需要
if(&setEqual == this)
你永远不要使用
if(setEqual == *this)
用于检测自我分配,因为后面的语句将调用对象的比较,这可能会以您不期望的方式重载,并且可能也会变慢。
关于c++ - 比较自我分配的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3975070/