0
實現從自定義類到POD或其他類型的轉換非常簡單。它在自定義類本身中實現爲以目標類型命名的運算符。像這樣,將POD實現爲自定義類類型鑄造
operator int{ return anInt; }
另一種方式呢?例如,我可以重載自定義類類型轉換嗎?
實現從自定義類到POD或其他類型的轉換非常簡單。它在自定義類本身中實現爲以目標類型命名的運算符。像這樣,將POD實現爲自定義類類型鑄造
operator int{ return anInt; }
另一種方式呢?例如,我可以重載自定義類類型轉換嗎?
你可以,但你做到這一點不同,通過提供相關類的構造函數,它的基本類型作爲參數:
class X {
public:
X(int) {}
};
void f(X const &x) { }
int main(){
f(2); // allowed -- will construct an X, then pass it to `f`.
}
注意這可能會導致在某些情況下的意外轉換 - 通常認爲將這些構造函數標記爲explicit
以防止它們被使用,除非明確強制轉換。
使用單參數的構造函數
MyClass(int n) :anInt(n) {}
所以,如果我這樣實現它?我可以簡單地做:MyCustomClass對象; object = 2;這會調用初始化器,然後複製構造函數? –
@ShaneHsu:不需要'MyCustomClass object = 2;'會使用構造函數,但是作爲它自己的'object = 2;'語句是一個賦值,它將使用重載的賦值運算符。 –
我明白了,這個怎麼樣? 'MyCustomClass object =(MyCustomClass)(2)'會調用什麼,或者只是編譯器錯誤? –