我试图在名为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/

10-11 18:07