本篇文章给大家分享的是有关C++构造函数抛出异常的注意事项有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
目前创新互联公司已为数千家的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、尼河口网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。1.构造函数抛出异常导致内存泄漏
在C++构造函数中,既需要分配内存,又需要抛出异常时要特别注意防止内存泄露的情况发生。因为在构造函数中抛出异常,在概念上将被视为该对象没有被成功构造,因此当前对象的析构函数就不会被调用。同时,由于构造函数本身也是一个函数,在函数体内抛出异常将导致当前函数运行结束,并释放已经构造的成员对象,包括其基类的成员,即执行直接基类和成员对象的析构函数。考察如下程序。
#include <iostream> using namespace std; class C { int m; public: C(){cout<<"in C constructor"<<endl;} ~C(){cout<<"in C destructor"<<endl;} }; class A { public: A(){cout<<"in A constructor"<<endl;} ~A(){cout<<"in A destructor"<<endl;} }; class B:public A { public: C c; char* resource; B() { resource=new char[100]; cout<<"in B constructor"<<endl; throw -1; } ~B() { cout<<"in B destructor"<<endl; delete[] resource; } }; int main() { try { B b; } catch(int) { cout<<"catched"<<endl; } }
名称栏目:C++构造函数抛出异常的注意事项有哪些-创新互联
标题链接:https://www.cdcxhl.com/article0/csdooo.html
成都网站建设公司_创新互联,为您提供定制开发、域名注册、企业建站、App设计、搜索引擎优化、服务器托管
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联