異常rtti
將類宣告放在另乙個類中,在另乙個類中宣告的類被稱為巢狀類。
作用域
宣告位置
包含它的類是否可以使用它
從包含它的類派生而來的類是否可以使用它
在外部是否可以用
私有部分是否
否保護部分是是
否公有部分是是
是,通過類限定符來使用
對異常處理有3部分組成:
throw終止函式的執行,並使得程式沿函式呼叫序列後退,直到找到包含try塊的函式,即第乙個這樣的函式:包含能夠捕獲相應異常的try-catch。
棧解退:函式出現異常而終止,則程式將釋放棧中記憶體,但不是釋放棧的第乙個返回位址後停止,而是基繼續釋放棧,直到找到乙個位於try塊的返回位址。隨後,控制權將轉到塊尾的異常處理程式,而不是程式呼叫後面的第一條語句。
程式進行棧解退回到捕獲異常的地方時,將釋放棧中的自動儲存型變數。如果變數是類物件,將為該物件呼叫析構函式。
在乙個異常類層次結構,並處理不同的異常型別,則使用基類引用將能夠捕獲任何異常物件;而使用派生類物件只能捕獲它所屬類及從這個類派生而來的類物件。引發異常的物件將被第乙個與之匹配的catch塊捕獲,這意味著catch塊的排列順序應該與派生順序相反。
用省略號可以表示異常型別,捕獲任何異常。
執行階段型別識別
dynamic_cast(pt)
如果指向的物件(*pt)的型別為type或者是從type直接或間接派生而來的型別,則可以將指標pt轉換為type型別的指標,否則,結果為0,即空指標。
typeid運算子確定兩個物件是否為同種型別,運算子返回乙個對type_info物件的引用,接受兩種引數:
例如:typeid(magnificent)==typeid(*pg)
關於異常和其他
關於異常的幾種處理方法 1 呼叫abort abort 函式的原型位於標頭檔案cstdlib.h 或者stdlib.h 中,其典型實現是向標準錯誤流 即cerr使用的錯流 傳送abnormal program termination 程式異常終止 然後終止程式。它還返回乙個隨實現而異的值。abort...
C 異常6 其他異常特性
雖然throw catch機制類似於函式引數和函式返回機制,但是還是有些不同之處。其中之一是函式fun 中的返回語句將控制權返回到呼叫fun 的函式a中,但throw語句將控制權向上返回到第乙個這樣的函式 包含能夠捕獲相應異常的try catch組合。另乙個不同之處是,引發異常時,編譯器總是建立乙個...
第15章 友元 異常和其他
這章貌似我碰到的不多,就不多說了,以後遇到應該會回來翻書,到時候再總結。先只說一下碰到的型別轉換運算子。15.5型別轉換運算子 四種 1 dynamic cast 子類指標單向基類指標轉換。繼承,單向。2 static cast 用在有繼承關係上的指標上,基類和子類可以互相轉化,不限制方向。只限制繼...