動態型別轉換是比靜態型別轉換更為嚴格的一種型別轉換。
如下**基本資料型別無法通過動態型別轉換
//基礎型別不可以轉換
char c = 'a';
//dynamic_cast非常嚴格,失去精度 或者不安全都不可以轉換
double d = dynamic_cast(c);
動態資料型別轉換只能發生在父類和子類之間,現在就通過**來測試下
class base2;};
class child2 :public base2
;};
父類和子類進行轉換
base2 * base = null;
child2 * child = null;
//child轉base2 * 安全
base2 * base2 = dynamic_cast(child);
子類和父類進行轉換
base2 * base = null;
child2 * child = null;
//base 轉child2 * 不安全
child2 * child2 = dynamic_cast(base);
很遺憾,以上**在進行編譯的時候會報錯,無法進行轉換。如果非要子類轉為父類型別,那麼就要求子類和父類要發生多型。
父類和子類發生多型,要求2點。
第1:父類中要有虛函式
第2:子類重寫父類對應的虛函式,將子類的引用放到父類型別變數中。
明白了這點之後,我們將base2中的func()變為虛函式,**如下
class base2
;};
子類重寫func()**如下
class child2 :public base2
;};
將子類的引用放到父類型別變數中
base2 * base3 = new child2;
現在就可以用動態型別轉換將父類型別轉為子類型別,**如下
mysql型別轉換c 型別轉換 C 型別轉換
一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...
dynamic cast 動態強制型別轉換
dynamic cast必須要有虛函式才能進行轉換,static cast 靜態轉換,不安全。執行時型別資訊通過運算子dynamic cast來提供。dynamic cast 用來向下轉型,將基類指標轉換為派生類指標 把基類指標轉換為派生類指標 運算子dynamic cast ptr 用來將乙個指標...
動態資料型別轉換
這是我的工具包裡的一部分 部分方法已被我移值到我的框架去,做為實體的基類的預設方法。using system using system.collections.generic using system.text using system.web.ui using system.reflection ...