请问,memset(this,0,sizeof(*this)) 是错误行为。
http://topic.csdn.net/u/20111127/22/c5ba536d-e995-4a98-8c76-f2e4ac73a044.html
原帖在这里,
supermegaboy 说 memset(this,0,sizeof(*this)) 是错误行为。 错误行为
原因我估计是
构造函数还没有运行完
this可以用
但是 *this是不能用的!!!!!
因为没有完成
但是从反汇编看, 调用构造函数分为三步:一:临时对象在程序编译的时候已经分配内存,临时对象大小已经确定了
比如:你在main函数中 写: XXX obj;
二,调用构造,用0cccc cccch 初始化,
然后调用memset, 看不出有什么问题啊
菜鸟一名,胡说大家见谅,希望能解决心中的疑惑!!!今早要上班,公司上网不方便, 晚上才能回家,
不能及时跟帖子,请大家见谅!!!!
第二个问题:
#include<iostream>class Test{public: Test(){std::cout<<"构造"<<std::endl;} Test(Test const& obj) { std::cout<<"拷贝构造"<<std::endl; } ~Test(){std::cout<<"析构"<<std::endl;} public: void f(int i) throw (Test) { if(i==0) throw Test(); } void what() const { std::cout<<"发生异常"<<std::endl; }};int main(){ try { Test obj; obj.f(0); } catch(Test e) //这里不用引用,说是:obj拷贝一个临时对象,临时对象,然后拷贝生成了e { e.what(); } return 0; }