-1
爲什麼我沒有得到輸出。我期待有趣(Test2)稱爲輸出。由於函數傳遞的參數不同,所以不應該有任何衝突。C++運算符超載衝突
#include <iostream>
using namespace std;
class Test2
{
int y;
};
class Test
{
int x;
Test2 t2;
public:
operator Test2() { return t2; }
operator int() { return x; }
};
void fun (int x) { cout << "fun(int) called"; }
void fun (Test2 t) { cout << "fun(Test 2) called"; }
int main()
{
Test t;
fun(t);
return 0;
}
IMO,鑄造操作員是C++語言中濫用最多的部分之一。而且,當你編寫散佈的代碼時,你不會知道或忘記哪個函數實際被調用,並且可能導致程序下降到一個意想不到的執行路徑。即使你的代碼編譯完成,你甚至不確定哪個函數會被調用。 – PaulMcKenzie