C 的隱式引用轉換

2021-06-08 11:34:58 字數 962 閱讀 4199

隱式引用轉換包括以下幾類:

●從任何引用型別到物件型別的轉換

●從類型別s到類型別t的轉換,其中s是t的派生類。

●從類型別s到介面型別t的轉換,其中類s實現了介面t。

●從介面型別s到介面型別t的轉換,其中t是s的父介面。

從元素型別為ts的陣列型別s向元素型別為tt的陣列型別t轉換,這種轉換需要滿足下列條件:

●s和t只有元素的資料型別不同,但它們的維數相同。

●ts和tt都是引用型別。

●存在從ts到tt的隱式引用轉換

●從任何陣列型別到system.array的轉換。

●從任何代表型別到system.delegate的轉換。

●從任何資料型別或代表型別到system.icloneable的轉換。

●從空型別(null)到任何引用型別的轉換。

比如,下面的程式無法通過編譯,因為陣列的元素型別是值型別,c#中不存在這樣的隱式轉換。

程式清單6-3:

using system;

class test

} 而下面這段程式則是正確的:

程式清單6-4:

using system;

class class1

{}class class2:class1

{}class test

} 程式6-5很有趣,它給出了我們常用的值型別在系統環境中的原型定義。

程式6-5:

using system;

class test

}程式的輸出結果是:

system.single;

system.double;

system.sbyte;

system.byte;

system.int16;

system.int32;

system.int64;

system.string;

c 隱式轉換

class string string s1 a 錯誤 不能做隱式char string轉換 string s2 10 可以 呼叫explicit string int n string s3 string 10 可以 呼叫explicit string int n 再呼叫預設的複製建構函式 str...

C 隱式轉換

眾所周知,c 的基本型別中並非完全的對立,部分資料型別之間是可以進行隱式轉換的。所謂隱式轉換,是指不需要使用者干預,編譯器私下進行的型別轉換行為。很多時候使用者可能都不知道進行了哪些轉換。c 物件導向的多型特性,就是通過父類的型別實現對子類的封裝。通過隱式轉換,你可以直接將乙個子類的物件使用父類的型...

C 隱式轉換

include using namespace std class a a int main 程式輸出 constructor destructor a a 10 這樣的語法是通過的,為什麼?由於發生了建構函式的隱式轉換,隱式轉換這樣的規則同意用乙個引數來初始化物件,這會呼叫類中帶有乙個引數的建構函...