下午接了个阿里电话面试,当时刚刚睡醒,感觉有点懵。。。大脑莫名当机状态,很多问题没有表述清楚,有一个关于 c++ 如何实现反射机制的问题,感觉蛮有意思,当时虽然回答了用函数指针和工厂模式,但是表述并不当,细节也没有想清楚。。。 晚上抽空简单实现了一发:
/*************************************************************************
> File Name: reflector.cpp
> Author: xtestw
> Mail: xuwei8091@163.com
> Created Time: Fri Mar 11 21:09:12 2016
************************************************************************/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <cmath>
using namespace std;
typedef void* (*getClz)(void);
map<string,getClz> 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<<t->i<<endl;
return 0;
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于