下午接了个阿里电话面试,当时刚刚睡醒,感觉有点懵。。。大脑莫名当机状态,很多问题没有表述清楚,有一个关于 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; }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于