C 類的執行時識別與建立

2021-05-21 15:39:48 字數 325 閱讀 4338

以前一直以為執行時的類建立不過是new 乙個class,可是直想自己實現的時候發現並非這麼簡單。

現在總結起來要實現之也不外乎實現以下幾條:

1、類可以通過new來建立,這個是必須的也是必然的,c++肯定支援。

2、由名稱到類或者類建立函式的對映關係。這個需要我們自己實現,像mfc的cruntimeclass所實現的鍊錶,甚至可以利用stl的鍊錶(個人想法,未經驗證)。

3、上述用的鍊錶或其他數結構的初始化。這是最關鍵的地方,在mfc的實現在利用了全域性類的建構函式先於main函式執行這一特點,通過乙個類的建構函式專門實現鍊錶的初始化,不知道除了這個方法之外還有沒有其他方法。

執行時建立類

a.使用objc allocateclasspair建立乙個類class const char classname calculator class kclass objc getclass classname if kclass b.使用class addivar新增乙個成員變數 nsuinteg...

執行時型別識別

執行時的型別識別 rtti 分為兩類 1.typeid操作符 2.dynamic cast操作符 先看第二種 dynamic cast完成將基類型別的指標或者引用安全轉化為派生類型別的指標和引用。對於指標,如果轉化失敗,則將指標置為null,對於引用型別,因為沒有null,所以直接丟擲bad cas...

執行時型別識別

q1 執行時型別識別 rtti 簡述 通過下面兩個操作符實現rtti 1 typeid 操作符,返回指標或引用所指物件的實際型別 2 dynamic cast操作符,將基類型別的指標或引用安全的轉換為派生型別的指標或引用對於帶虛函式的類,在執行時執行rtti操作符,對其他型別,在編譯時計算rtti操...