/*
* @descripttion: c++自己實現反射案例
* * 根據乙個字串(類的名稱),建立出乙個物件
* 實現思路
* 1. 可以用乙個map來儲存類名-建構函式這樣的鍵值對,每新增乙個類,就在這個map「註冊」乙個鍵值對
* 2. 因為這個map是乙個全域性都會用到的,所以可以使用單例模式
* 3. 在進入main函式之前,這個map就應該生成好,即每乙個類在例項化之前就執行了「註冊」的**
* * @version: 1.0
* @author: milo
* @date: 2020-06-05 15:14:40
* @lasteditors: milo
* @lastedittime: 2020-06-05 15:14:40
*/#include #include #include #define func functionusing namespace std;
class reflector
return nullptr;
}void register(const string &class_name, func && generator)
static shared_ptrinstance()
return ptr;
}};shared_ptrreflector::ptr = nullptr;
class registeraction
};#define register(class_name) \
registeraction g_register_action_##class_name(#class_name, ()\
);class base
};register(base);
class objecta : public base
};register(objecta);
class objectb : public base
};register(objectb);
int main()
g++ reflector.cpp -o reflector -std=c++11
C 利用反射實現動態引導程式集簡單案例
反射可以不但用來讀取元資料,還可以使用反射從編譯時還不清楚的型別中動態建立程式集,此案例摘自c 高階程式設計。首先先建立乙個控制台應用程式,然後新增乙個類庫,類庫名稱為calculatorlib,如下圖所示 calculatorlib程式集中有兩個方法,引數是x和y,乙個方法返回兩數之和,另乙個方法...
c so 反射 C 實現反射機制
net下的很多技術都是基於反射機制來實現的,反射讓.net平台下的語言變得得心應手。最簡單的,比如列舉型別,我們我可以很容易的獲得乙個列舉變數的數值以及其名稱字串。可是,在c 中,列舉變數本質上和乙個整形變數沒有區別,我們很難獲取乙個列舉變數的名稱字串。其實在c 中,我們可以通過巨集來實現類似反射的...
c so 反射 c 實現反射機制
下午接了個阿里 面試,當時剛剛睡醒,感覺有點懵。大腦莫名當機狀態,很多問題沒有表述清楚,有乙個關於 c 如何實現反射機制的問題,感覺蠻有意思,當時雖然回答了用函式指標和工廠模式,但是表述並不當,細節也沒有想清楚。晚上抽空簡單實現了一發 file name reflector.cpp author x...