0
我已经写了MyComplex类和过载的加号(+)运算为:为什么此代码不会产生ambigous通话错误?
class MyComplex
{
public:
operator int() { return realPart; }
MyComplex(int r, int i=0)
{
realPart = r;
imaginaryPart = i;
}
int operator +(int i) { return imaginaryPart+i; }
private:
int realPart, imaginaryPart;
};
int main()
{
MyComplex c(5, 4);
cout << c+10 << "\n"; // Why is this not ambiguous?
}
我想表达C + 10可能被解释或者作为尝试添加两个整数(Ç in c + 10会使用转换运算符运算符int())或通过超载运算符函数int operator +(int i)作为重载运算符调用降级为整数。但程序编译没有任何错误,并产生了14的输出。如何?
完全匹配更好 – Danh
当你写'1 + 2'可以被解释为试图添加两个整数,或试图将它们转换为'double'并添加它们? – immibis
c + 10相当于c +(10)ant的perfact匹配是int运算符+(int i)。 – user1438832