【010】高級強制類型轉換

要點總結

 

我們用傳統的強制類型轉換實現:把所需要的指針類型放在一對圓括號之間,然後寫出將被強制轉換的地址值。

Company *company = new Company(“APPLE”, “Iphone”);

TechCompany *tecCompany = company;

 

注意不能既刪除company,又刪除tecCompany。

因爲強制類型轉換操作不會創建一個副本拷貝,它只是告訴編譯器把有關變量解釋爲另一種類型組合形式,所以他們指向的是同一個地址。現在術語稱之爲“重婚”!

 

動態對象強制類型轉換

 

雖然剛剛那個栗子程序看起來很美!

但它仍有一個問題沒有解決:萬一被強制轉換的類型和目標類型結構完全不同,咋整?

 

編譯器很笨的,它仍然將按照我們的代碼行事!這樣子的程序是相當危險的,隨時可能崩潰以及被崩潰。

因爲在類繼承關係之間跳來轉去(也就是對有關對象進行強制類型轉換)在面向對象的程序裏非常重要,所以C++程序員準備了幾個新的強制類型轉換操作符(高級)!

C++動態對象強制類型轉換

 

注:只要你喜歡,你仍可以在C++裏繼續使用C的強制轉換操作符(像剛纔的栗子),但表中的操作符還能進行必要的類型檢查,因而能夠改善程序的可靠性。

 

動態強制類型轉換的語法與剛剛我們學到的有很大不同,它看起來更像是一個函數調用:

Company *company = new Company(“APPLE”, “Iphone”);

TechCompany *tecCompany = dynamic_cast<TechCompany *>(company);

 

先在兩個尖括號之間寫出想要的指針類型,然後是將被轉換的值寫在括號中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章