c++ 析构函数先被调用了 为什么
class Myc{
private:
int a;
public:
Myc(){ PA("构造函数调用");}
virtual ~Myc(){ PA("析构函数调用");}
inline void f(){PA("member func");}
};
void* pmyc(){
Myc mc;
LPVOID lpv=&mc;
return lpv;
}
void main( ){
Myc* lpv=(Myc*)pmyc();
lpv->f();
PA(sizeof(Myc));
PA(sizeof(lpv));
getchar();
}
--------------------------------------------
如上面代码
PA 为 cout<<x<<endl;宏
在main调用 f()之前,析构函数被调用了,这可能是LPVOID lpv=&mc;这个语句产生了临时量吧??(解答),成员int a,主要是用来区别
PA(sizeof(Myc));
PA(sizeof(lpv));
的值。
为什么析构函数会在调用f之前被调用了,高手们解答一下,