2
下面是簡單的代碼:爲什麼顯式調用operator <<模糊?
int main()
{
int x=0;
std::cout<<x;
operator<<(std::cout,x); //ambiguous
return 0;
}
爲什麼operator<<(std::cout,x)
呼叫曖昧但不std::cout<<x;
?謝謝
下面是簡單的代碼:爲什麼顯式調用operator <<模糊?
int main()
{
int x=0;
std::cout<<x;
operator<<(std::cout,x); //ambiguous
return 0;
}
爲什麼operator<<(std::cout,x)
呼叫曖昧但不std::cout<<x;
?謝謝
這裏的問題是,輸出整數operator<<
is an std::ostream
member function。
因此,爲了顯式調用操作符函數,您應該執行
std::cout.operator<<(x);
stand-alone operator<<
function是用於字符和字符串。
取決於您的編譯器,它實際上可能會說明它在重載解析中考慮哪些函數。你可以檢查一下,瞭解原因。 –