RTTI特性小究

2022-03-25 01:27:40 字數 877 閱讀 2628

rtti特性小究(dynamic_cast轉換操作符和typeid操作符)

要使用rtti特性,必須包含標頭檔案,並且要使用/gr開啟執行時資訊,

在visual studio中

開啟該項目的「屬性頁」對話方塊。有關詳細資訊,請參見如何:開啟專案屬性頁。

單擊「c/c++」資料夾。

單擊「語言」屬性頁。

修改「啟用執行時型別資訊」屬性。

在g++中應該是在編譯時使用命令/gr即可,(這個本人不是很確定,沒實驗過)

先給一小段**:

class a

};class b:public a

;一: dynamic_cast強制轉換運算子將乙個基類的指標或者引用轉換為其子類的指標或者引用,其使用方法為:dynamic(object).注意:基類必須含有虛函式(如果沒有虛函式,可將析構函式宣告為virtual,後面會解釋為什麼需要虛函式),對該基類的指標或引用使用後會出現以下幾種情況:

1.將乙個基類的指標轉換為子類的指標時,如果基類指標指向的是其子類的乙個物件,則轉換成功,返回乙個指向子類的指標;否則轉換不成功,返回乙個null指標。例如:

a *pa = new b();

b *pb = dynamic_cast(pa);

delete pa;

此處由於pa指向乙個b類的物件,所以轉換成功。下面的例子將轉換不成功,返回null指標:

a p;

b *pb = dynamic_cast(&p);

if(pb == null)

else if(rhs == typeid(department).name())

else if(rhs == typeid(project).name())

}這會應該能大概看出它的作用了吧?

std map特性的小技巧

typedef std pairkey std mapmaptest void functest for int i 0 i 10 i auto fnsearchbykey01 unsigned int keyfirst std unordered set return std move resse...

AutoMapper小技巧 通過特性配置讀取快取

可能這樣說會讓人有點摸不著頭腦,接下來就開始一步一步講解如何編碼。1.建立乙個attribute並在property中標記以獲取我們需要的引數 使用對映 attributeusage attributetargets.property public class 與快取字典關聯的外來鍵 public ...

反射獲取列舉特性的小例子

如下 using system using system.collections.generic using system.collections.specialized using system.reflection using system.componentmodel namespace nv...