运算符函数称为无限

时间:2015-10-17 17:27:47

标签: c++

我收到运行时错误,有没有人能弄清楚为什么在这个程序中有无限调用以及哪一行正在执行

http://ideone.com/0CWZTD

这是我的代码

class opOverload{
public:
    bool operator==(opOverload temp){
        if(*this == temp){
            cout << "both same";
            return true;
        }
        else{
            cout <<"both different";
            return false;
        }
    }
};


int main() {
    // your code goes here
    opOverload a1,a2;
    a1==a2;
    return 0;
}

2 个答案:

答案 0 :(得分:0)

因为*this == temp相当于(*this).operator==(temp),显然会调用您刚才写的operator==

答案 1 :(得分:0)

*this == temp

将再次调用您的运算符重载,因此您基本上正在执行:

A(){
   A();
}

这是一个自我递归函数调用,你显然没有取得进展(对于基本情况,更糟糕的是......没有基本情况)