没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第 7 集 构造函数中抛出的异常
构造函数中抛出的异常
1、标准 C++中定义构造函数是一个对象构建自己,分配所需资源的地方,一旦构造函数执行完毕,
则表明这个对象已经诞生了,有自己的行为和内部的运行状态,之后还有对象的消亡过程(析构函数的执
行)。可谁能保证对象的构造过程一定能成功呢?说不定系统当前的某个资源不够,导致对象不能完全构
建好自己(人都有畸形儿,更何况别的呢?朋友们!是吧!),因此通过什么方法来表明对象的构造失败
了呢?C++程序员朋友们知道,C++中的构造函数是没有返回值的,所以不少关于 C++编程方面的书
上得出结论:“因为构造函数没有返回值,所以通知对象的构造失败的唯一方法那就是在构造函数中抛出
异常”。主人公阿愚非常不同意这种说法,谁说的,便不信邪!虽然 C++标准规定构造函数是没有返回值,
可我们知道每个函数实际上都会有一个返回值的,这个值被保存在 eax 寄存器中,因此实际上是有办法
通过编程来实现构造函数返回一个值给上层的对象创建者。当然即便是构造函数真的不能有返回值,我们
也可以通过一个指针类型或引用类型的出参来获知对象的构造过程的状态。示例如下:
class MyTest_Base
{
public:
MyTest_Base (int& status)
{
//do other job
// 由于资源不够,对象构建失败
// 把 status 置 0,通知对象的构建者
status = 0;
}
protected:
};
void main()
{
int status;
MyTest_Base obj1(status);
// 检查对象的构建是否成功
if(status ==0) cout << “对象构建失败” << endl;
}
程序运行的结果是:
对象构建失败
是啊!上面我们不也得到了对象构造的成功与否的信息了吗?可大家有没有觉得这当中有点问题?主
人公阿愚建议大家在此停留片刻,仔细想想它会有什么问题?OK!也许大家都知道了问题的所在,来验
证一下吧!
资源评论
licup
- 粉丝: 3
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java源码资源JAVA+JSP的聊天室
- java源码资源Java+ajax写的登录实例
- 【java毕业设计】网上招投标系统源码(ssm+mysql+说明文档).zip
- [风河VxWorks].TORNADO.v2.2 for pentium
- 【java毕业设计】实验室课程管理系统源码(ssm+mysql+说明文档+LW).zip
- 数据同步的艺术:数据库同步策略与实践
- java源码资源Java 高考信息管理系统 SQL数据库
- (源码)基于Qt框架的在线题库管理系统.zip
- java源码资源Java 电梯模拟程序 v2.0
- 【java毕业设计】平面设计课程在线学习平台系统源码(ssm+mysql+说明文档+LW).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功