oop运算符重载没有返回正确的值

时间:2015-07-03 19:41:58

标签: c++ oop operator-overloading

以下代码退出执行。

一些想法?

我以为t1不等于t2,所以我试图逐字节地复制t1和t2。但这并没有奏效。

#include<stdio.h>
class test{
    int x;
public:
    test(){ x=1; }
    bool operator==(test &temp);

};

bool test::operator==(test &temp){
    if(*this==temp){
        printf("1");
        return true;
    }
    else{ 
        printf("2"); 
        return false;
    }


}
void main(){
    test t1, t2;
    t1==t2;

}

1 个答案:

答案 0 :(得分:0)

这一行

if (*this == temp){

再次调用operator==,因此我们最终会出现堆栈溢出。

也许你的意思是

if (this == &temp){ // &

你必须决定这些课程是平等的。上面的行假设一个类等于它自己。但是,例如,如果将类定义为相等,如果它们具有相同的x值,则可以编写

bool test::operator==(test &temp){
if (this->x == temp.x){
    printf("1");
    return true;
}
else{
    printf("2");
    return false;
}