採取以下類:構造類型強制在C++
class mytype {
double num;
public:
mytype(int a) {
num = sqrt(a);
}
void print() {
cout << num;
}
}
說有是取MYTYPE的方法:
void foo(mytype a) {
a.print();
}
它是合法的C++(或者是有沒有辦法實現這個)調用foo(4),這將(理論上)輸出2?從我可以收集到的,你可以重載用戶定義類的類型轉換,但不能轉換成。構造函數可以以符合標準的方式執行此操作(當然,假設構造函數不明確)。希望有一種方法來到底有沒有這個法律:
int a;
cin >> a;
foo(a);
注:這是很明顯不是實際的問題,而只是張貼目的的例子。由於繼承和其他程序特定的問題,我不能僅僅重載函數。
謝謝。在這種情況下,需要此行爲。如果foo接受了mytype的超類,這也能起作用嗎?另外,爲什麼必須是4.0? – 2010-04-20 23:48:08
我認爲rlbond沒有注意到構造函數mytype(int a)接受一個int參數,構造函數在內部將其轉換爲double。 – 2010-04-21 02:13:06
@Windows程序員:你是對的。然而,顯然這種轉換對於內置插件(但不適用於類)是有效的。 – rlbond 2010-04-21 05:25:15