重载<=运算符,但程序以退出代码-1073741571(0xC00000FD)结尾

时间:2019-11-17 16:54:13

标签: c++ c++11 operator-overloading

我正在尝试重载<=运算符,但是程序有错误

  

进程结束,退出代码为-1073741571(0xC00000FD)

op.h

bool operator<=(const Date& d1, const Date& d2)
{
    return d1 <= d2;
}

main.cpp

cout << "Checking <=" << endl;
assert(Date(1,1,2000) <= Date(2,1,2000));
assert(!(Date(2,1,2000) <= Date(1,1,2000)));
assert(Date(2,1,2000) <= Date(1,2,2000));
assert(Date(2,2,2000) <= Date(1,1,2001));
cout << "Checking <= Complete!" << endl;

这是怎么回事?

1 个答案:

答案 0 :(得分:1)

以您为例,您致电

bool operator<=(const Date& d1, const Date& d2)

无限期地,它最终会退出堆栈,因为这是一个递归调用。 尝试直接比较作为参数传递的两个对象的内容。