C 反射的實現

2021-08-03 16:12:09 字數 1152 閱讀 4783

首先是要寫乙個類,這個類主要有2個功能,註冊類和通過類名獲取類例項的功能

typedef

map class_map;

typedef

void* (*createobject)(void);

//宣告

class classfactory

{public:

void register(const

string &name, createobject method);

void *getclassbyname(const

string &name);

private:

class_map m_classmap;

//定義

void* classfactory::getclassbyname(const string &name)

else

}void classfactory::register(const string &name, createobject method)

然後需要提供每個類註冊到class factory的巨集定義

class registerfunction 

};#define classcreatobject(classname) \

void *create##classname()

#define registerclass(classname) \

registerfunction register##classaname(#classname,(createobject) create##classname)

最後在定義類的時候加上

classcreatobject(類名)

//這個巨集定義定義了乙個create 類指標的方法

registerclass(類名); // 根據上述的create類指標方法,將類物件register 到class factory中

最後的最後在使用的時候只需要,

getclassbyname(類索引)

c so 反射 C 實現反射機制

net下的很多技術都是基於反射機制來實現的,反射讓.net平台下的語言變得得心應手。最簡單的,比如列舉型別,我們我可以很容易的獲得乙個列舉變數的數值以及其名稱字串。可是,在c 中,列舉變數本質上和乙個整形變數沒有區別,我們很難獲取乙個列舉變數的名稱字串。其實在c 中,我們可以通過巨集來實現類似反射的...

c so 反射 c 實現反射機制

下午接了個阿里 面試,當時剛剛睡醒,感覺有點懵。大腦莫名當機狀態,很多問題沒有表述清楚,有乙個關於 c 如何實現反射機制的問題,感覺蠻有意思,當時雖然回答了用函式指標和工廠模式,但是表述並不當,細節也沒有想清楚。晚上抽空簡單實現了一發 file name reflector.cpp author x...

c so 反射 C 反射的方法與實現

1.什麼是反射?反射是程式獲取自身資訊的能力 2.反射有什麼用?可以用於動態建立型別,跨語言跨平台資料互動,持久化,序列化等等。3.反射包含哪些功能?至少包含以下功能 列舉所有member 獲取member的name和type 能夠get set member 4.有哪些反射方法?反射主要有3種實現...