如果我错误地重载运算符会报告什么错误?

时间:2010-03-03 22:54:55

标签: c++ operator-overloading

我知道我们不能用其他含义重载运算符,我们不能创建新的运算符,并且我们不能在没有用户定义的类的情况下重载。如果我错误地重载运算符?会报告什么错误?编译错误或运行时错误?

如果我超载**,会发生什么?

3 个答案:

答案 0 :(得分:2)

您只能重载现有的运营商。 C ++中没有operator **

如果你尝试,编译器会抱怨。

在编译时检查运算符重载。如果它编译,它只是一种函数,因此可能的运行时错误与任何其他函数相同。

答案 1 :(得分:1)

也许我误解了你的问题,但你绝对可以超越具有不同含义的运营商。考虑整数与iostreams:

1 << 5;  // takes the value 1 and does a binary shift

cout << "moo";  // inserts the string "moo" into the cout stream

无论如何,运算符重载只是函数。根据您的操作,您可能会收到编译错误或运行时错误。这取决于具体的错误。

答案 2 :(得分:0)

另外,请记住,如果您正在操作堆上的对象(通过new运算符),错误地重载操作符可能会导致崩溃或内存泄漏,以及不执行您的操作。这些类型的问题可能不会生成运行时或编译时错误。