下午接了个阿里电话面试,当时刚刚睡醒,感觉有点懵。。。大脑莫名当机状态,很多问题没有表述清楚,有一个关于 c++ 如何实现反射机制的问题,感觉蛮有意思,当时虽然回答了用函数指针和工厂模式,但是表述并不当,细节也没有想清楚。。。 晚上抽空简单实现了一发:
/*************************************************************************
> File Name: reflector.cpp
> Author: xtestw
> Mail: xuwei8091@163.com
> Created Time: Fri Mar 11 21:09:12 2016
************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef void* (*getClz)(void);
map clzs;
class T1{
public:
T1(){
i=j=1;
}
static void* getClz(){
return new T1();
}
int i,j;
};
class T2{
public:
T2(){
i=j=2;
}
static void* getClz(){
return new T2();
}
int i,j;
};
int main(){
clzs["T1"]=T1::getClz;
clzs["T2"]=T2::getClz;
T1* t=(T1 *)clzs["T1"]();
cout<i<
return 0;
}