Я получаю ошибку во время выполнения. Может ли кто-нибудь понять, почему в этой программе бесконечный вызов и какая строка это делает?

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;
}
c++
-2
Raghib Ahsan 17 Окт 2015 в 20:27

2 ответа

Лучший ответ

Поскольку *this == temp эквивалентен (*this).operator==(temp), который, очевидно, вызывает тот же самый operator==, который вы только что написали.

0
emlai 17 Окт 2015 в 17:29
*this == temp

Снова вызовет перегрузку вашего оператора, поэтому вы в основном делаете:

A(){
   A();
}

Это саморекурсивный вызов функции, и вы, очевидно, не продвигаетесь (к базовому случаю, даже хуже ... базового случая нет)

0
watashiSHUN 17 Окт 2015 в 17:36