我們用傳統的強制型別轉換實現:把所需要的指標型別放在一對圓括號之間,然後寫出將被強制轉換的位址值。
techcompany *teccompany = company;
注意不能既刪除company,又刪除teccompany。
因為強制型別轉換操作不會建立乙個副本拷貝,它只是告訴編譯器把有關變數解釋為另一種型別組合形式,所以他們指向的是同乙個位址。現在術語稱之為「重婚」!
雖然剛剛那個栗子程式看起來很美!
但它仍有乙個問題沒有解決:萬一被強制轉換的型別和目標型別結構完全不同,咋整?
編譯器很笨的,它仍然將按照我們的**行事!這樣子的程式是相當危險的,隨時可能崩潰以及被崩潰。
因為在類繼承關係之間跳來轉去(也就是對有關物件進行強制型別轉換)在物件導向的程式裡非常重要,所以c++程式設計師準備了幾個新的強制型別轉換操作符(高階)!
c++動態物件強制型別轉換
動態強制型別轉換的語法與剛剛我們學到的有很大不同,它看起來更像是乙個函式呼叫:
techcompany *teccompany = dynamic_cast(company);
先在兩個尖括號之間寫出想要的指標型別,然後是將被轉換的值寫在括號中。
高階強制型別轉換
動態物件強制型別轉換 萬一被強制轉換的型別和目標型別結構完全不同,咋整?編譯器很笨的,它仍然將按照我們的 行事!這樣子的程式是相當危險的,隨時可能崩潰以及被崩潰。因為在類繼承關係之間跳來轉去 也就是對有關物件進行強制型別轉換 在物件導向的程式裡非常重要,所以c 程式設計師準備了幾個新的強制型別轉換操...
高階強制型別轉換 C (38)
靜態物件強制型別轉換例如 右邊返回了乙個techcompany型別的指標,左邊定義了乙個company型別的指標,叫做company techcompany techcompany company 這兩句話的意思是 兩個相同型別的變數通過指標賦值,但是中間經過了乙個不同型別的指標,理論上是可行的,因...
強制型別轉換
關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c 之父的 c 的設計和演化 最好的解決方法就是不要使用c風格的強制型別轉換,而是使用標準c 的型別轉換符 static cast,dynamic cast。標準c 中有四個型別轉換符 static cast dynamic cast reint...