執行時的型別識別(rtti)分為兩類:
1.typeid操作符
2.dynamic_cast操作符
先看第二種:dynamic_cast完成將基類型別的指標或者引用安全轉化為派生類型別的指標和引用。
對於指標,如果轉化失敗,則將指標置為null,對於引用型別,因為沒有null,所以直接丟擲bad_cast異常。下面是對應的例子:
#include using namespace std;
class base1
catch(bad_cast)
catch(bad_cast)
public:
base(int i = 0):ival(i){}
virtual bool equal(const base& rhs)const
protected:
int ival;
};class derived:public base
bool equal(const base& rhs)const
else
return false;
}private:
double dval;
};int main(){
base b1;
base b2;
derived d1(1,1.1);
derived d2(2,2.2);
if(d1 == d2)
cout<<"yes"<
ps:昨天去參加了乙個筆試,竟然遇到了typeid的問題,(好**啊好**)所以狠下心,還是看看吧。
執行時型別識別
q1 執行時型別識別 rtti 簡述 通過下面兩個操作符實現rtti 1 typeid 操作符,返回指標或引用所指物件的實際型別 2 dynamic cast操作符,將基類型別的指標或引用安全的轉換為派生型別的指標或引用對於帶虛函式的類,在執行時執行rtti操作符,對其他型別,在編譯時計算rtti操...
執行時型別識別(RTTI)
執行時型別識別 rtti 即是程式執行過程中知道某個物件屬於某個類,我們平時用c 程式設計接觸的rtti一般是編譯器的rtti,即是在新版本的vc 編譯器裡面選用 使能rtti 然後載入typeinfo.h檔案,就可以使用乙個叫typeid 的運運算元,它的地位與在c 程式設計中的sizeof 運運...
c RTTI(執行時型別識別)
原文 通過rtti,能夠通過基類的指標或引用來檢索其所指物件的實際型別。c 通過下面兩個操作符提供rtti。1 typeid 返回指標或引用所指物件的實際型別。2 dynamic cast 將基類型別的指標或引用安全的轉換為派生型別的指標或引用。對於帶虛函式的類,在執行時執行rtti操作符,返回動態...