《深度探索C++对象模型》--7 站在对象模型的尖端
C++語言的擴充性質(zhì)
1、template
(1)memberfunctions只有在被使用時,才會被實例化。
(2)注意使用template時,注意針對特定參數(shù)時可能有些操作沒有定義。
template在被實例化之前只能實施有限的錯誤檢查,有些很簡單的錯誤編譯器照樣通過。
(3)template之中對于一個nonmembername的決議結(jié)果,都是由“scope ofthe template instantiation”來決定,而不是由“scope ofthe template declaration”決定的。前者用以專注于特定的實例;后者用于專注于一般的templateclass。
2、exceptionhandling (EH)
EH中類型描述符是必須的,因為真正的exception是在執(zhí)行期被處理的,其object必須有自己的類型信息。RTTI正是因為支持EH而獲得的副產(chǎn)品。
3、runtimetype identification (RTTI)
dynamic_cast運算符對某個class類型實施時,如果傳回真正的地址,表示動態(tài)類型被確認;如果傳回0,則表示沒有指向任何object,意味著應(yīng)該以另外一種邏輯試行于這個動態(tài)類型未確定的object身上。
那為什么一個reference不可以像指針一樣將自己設(shè)置為0便代表了no object呢?
若將一個reference設(shè)置為0,會引起一個臨時對象(擁有被參考到的類型)被產(chǎn)生出來,該臨時對象的初值為0.這個reference然后被設(shè)置為該臨時對象的一個別名。因此,當dynamic_cast運算符施行于一個reference身上時,不能夠提供對等于指針情況下的true/false。
總結(jié)
以上是生活随笔為你收集整理的《深度探索C++对象模型》--7 站在对象模型的尖端的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ exception
- 下一篇: 面试题整理3 大数的表示及加减法问题