考试网 >> IT认证 >> 水平 >> 软件指导 >> 构造函数中抛出的异常

构造函数中抛出的异常

发布时间:2006-06-28 05:19     点击:
分页:[1] 2 3 4 5  下一页

构造函数中抛出的异常

  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;

}

  程序运行的结果是:

  对象构建失败

 ∈前。∩厦嫖颐遣灰驳玫搅硕韵蠊乖斓某晒τ敕竦男畔⒘寺穑靠纱蠹矣忻挥芯醯谜獾敝杏械阄侍猓恐魅斯⒂藿ㄒ榇蠹以诖送A羝蹋邢赶胂胨嵊惺裁次侍猓縊K!也许大家都知道了问题的所在,来验证一下吧!

class MyTest_Base

{

public:

MyTest_Base (int& status)
分页:[1] 2 3 4 5  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有