如何处理构造函数的失败?

 我来答
守巧云通寄
2019-08-13 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:686万
展开全部
你没有明确什么叫“构造函数失败”。我的理解是:构造函数中某一个执行过程没有得到你期望的结果。
如果我的理解是你想表达的,那么构造函数内部的处理是这样:
1.
构造函数想通知外部自己构造失败,只有抛异常这一个途径(没有返回值);
2.
如果你不抛异常,那么构造函数执行完毕,从语言层面上编译器认为该对象是正确构造了的,只有你知道其实构造没有按预想的进行,所以你需要用状态变量、构造函数引用参数或什么其他玩意儿让外界可以知道构造失败了。
3.
如果你抛异常标识构造失败,那么,所有已经构造好的基类对象和数据成员会按照构造逆序逐个进行析构(基础数据类型除外,因为它们析构就是什么都不做)。这里有一点要注意,如果发生了动态内存分配,那需要在抛异常前手动释放内存,否则会有内存泄漏。
齐活,不知道能不能回答你的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光天翰计璟
2019-12-17 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:710万
展开全部
1、构造函数想通知外部自己构造失败,只有抛异常这一个途径(没有返回值);
  2、
如果不抛异常,那么构造函数执行完毕,从语言层面上编译器认为该对象是正确构造了的,其实构造没有按预想的进行,所以需要用状态变量、构造函数引用参数就可以让外界可以知道构造失败了。
  3.、如果抛异常标识构造失败,那么,所有已经构造好的基类对象和数据成员会按照构造逆序逐个进行析构(基础数据类型除外,因为它们析构就是什么都不做)。这里有一点要注意,如果发生了动态内存分配,那需要在抛异常前手动释放内存,否则会有内存泄漏。
  构造函数
,是一种特殊的方法。主要用来在创建对象时初始化对象,
即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数
,可根据其参数个数的不同或参数类型的不同来区分它们
即构造函数的重载。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式