後來發現C++的型別轉換真是萬能
class T{
T();
T(int);
T(T&);
}
我有一個class T而我執行
T t;
t=100;
竟然可以通過編譯,原來在此Compiler很聰明的,會讓
t=100;
變成
t=new T(100);
在此會呼叫Convert Construct(轉換建構子)
此時建構子扮演的型別轉換的角色,C++會自己去找有沒有實作相關的轉換建構子
如果沒有就會編譯不過
像是
class G;
class T{
T(G&)
}
void print(T&){}
main(){
print(new G());
}
他可以通過編譯,因為在這種情況下,參數傳遞用的是initization而非assign
他會自動去尋找有沒有相關的轉換建構子
沒有留言:
張貼留言