why there is run time error - stack overflow
Hi all,
i went over some code and i was trying to figure out why it cause run time error of stack overflow.
attached the code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
class opOverload{
public:
bool operator==(opOverload temp);
};
bool opOverload::operator==(opOverload temp){
if(*this == temp ){
cout<<"The both are same objects\n";
return true;
}
else{
cout<<"The both are different\n";
return false;
}
}
void main(){
opOverload a1, a2;
a1= =a2;
}
|
i thought that when i execute the second line in main function, it calls to "==" function of opOverload class (overload function) and makes compare.
but when i ran it , it got into infinite loop until overflow.
WHY?
Thank you!
In this statement
if(*this == temp ){
you are recursively calling the operator. Each time when it is called it creates in stack local variable temp.
I'd like to appent that it would be more clear that this statement
if(*this == temp ){
is equivalent to
if ( ( *this ).operator ==( temp ) ){
By the way main shall be declared as
int main()
Topic archived. No new replies allowed.