我知道我们不能用其他含义重载运算符,我们不能创建新的运算符,并且我们不能在没有用户定义的类的情况下重载。如果我错误地重载运算符?会报告什么错误?编译错误或运行时错误?
如果我超载**,会发生什么?
答案 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运算符),错误地重载操作符可能会导致崩溃或内存泄漏,以及不执行您的操作。这些类型的问题可能不会生成运行时或编译时错误。