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