class unknow{
public:
operator int*() { return GetData(); }
int* GetData(){
int *p = new int(0);
return p;
}
};
int main(int argc, char* argv[]){
unknow u;
int *p = u;
delete p;
return 0;
}
以上代码通过编译(VC6.0(SP5)+WIN2KPRO(SP4,IE6.0))
想请问有没有人看见过类似的代码,这段代码是我看过...MFCINCLUDEAFXTLS.H里的template<class TYPE>
class CThreadLocal : public CThreadLocalObject声明后仿写的,我不太清楚这个语法。能否帮我解释一下。
public:
operator int*() { return GetData(); }
int* GetData(){
int *p = new int(0);
return p;
}
};
int main(int argc, char* argv[]){
unknow u;
int *p = u;
delete p;
return 0;
}
以上代码通过编译(VC6.0(SP5)+WIN2KPRO(SP4,IE6.0))
想请问有没有人看见过类似的代码,这段代码是我看过...MFCINCLUDEAFXTLS.H里的template<class TYPE>
class CThreadLocal : public CThreadLocalObject声明后仿写的,我不太清楚这个语法。能否帮我解释一下。
是运算符重载。
int *p = (int *)u;
于是就调用了运算符重载函数
operator int*() { return GetData(); }
重载的是(int *)
int *p = u;中,当调用int *p = u;
时,产生了隐式转,于是把u转话成了int *型你可以理解成在这个转换的过程中,调用了unknow ::operator int*() 这个类型转换函数