c++转换构造函数应该是发生错误应该如何处理

C++中构造函数是没有返回值的,那么该如何处理构造函数中可能的错误(例如资源分配失败,等错误)-CSDN论坛
C++中构造函数是没有返回值的,那么该如何处理构造函数中可能的错误(例如资源分配失败,等错误)
抛出异常。
异常或者assert断言
用资源管理器管理,从新写个class管理这个构造函数的对象
throw&抛出异常&检测
检查异常情况
引用&2&楼&hnuqinhuan&的回复:异常或者assert断言
use&smart&pointer&inside&class
怎么抛啊?哈哈&我不会?
那就不要把可能出错的这些操作放在构造函数里。
如果我想楼上的那样回答,人家会给我0分的
因为这是C++之父和herb&sutter这样的最顶级专家的回答。
你自己掂量吧。
引用&11&楼&wuyuwww&的回复:如果我想楼上的那样回答,人家会给我0分的
10楼的回答是非常正确的。当然2楼说的assert和throw也很正确。
和构造函数对应的析构函数,如果楼主看过C++&Primer的第四版将自定义异常的时候,就可以返现Stanley&Lippman也说过类似的话,而且在析构函数中不能throw,这时候前面说到的throw之类的办法也不可以了。Herb&Sutter在Exceptional&c++&中也说过说:“永远都不要写能够抛出异常的析构函数”
一定要在构造里&初始化资源就&throw吧
不如就别在构造里做会失败的事情
家个&init&函数,构造完后在init
回复c++构造函数发生错误应该如何处理_百度知道
c++构造函数发生错误应该如何处理
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
1、构造函数想通知外部自己构造失败,只有抛异常这一个途径(没有返回值); 2、 如果不抛异常,那么构造函数执行完毕,从语言层面上编译器认为该对象是正确构造了的,其实构造没有按预想的进行,所以需要用状态变量、构造函数引用参数就可以让外界可以知道构造失败了。 3.、如果抛异常标识构造失败,那么,所有已经构造好的基类对象和数据成员会按照构造逆序逐个进行析构(基础数据类型除外,因为它们析构就是什么都不做)。这里有一点要注意,如果发生了动态内存分配,那需要在抛异常前手动释放内存,否则会有内存泄漏。构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c++构造函数默认参数问题_百度知道
c++构造函数默认参数问题
#include&string&#include&iostream&classSales_item{public:doubleavg_price()boolsame_isbn(constSales_item&rhs)const{returnisbn==rhs.}//Slaes_it...
#include&string&#include&iostream& class Sales_item{public:double avg_price()bool same_isbn(const Sales_item &rhs)const{return isbn==rhs.}//Slaes_item(){}Sales_item( istream &is=cin):units_sold(0),revenue(0.0),isbn(is){}void get_isbn(){cout&&}private:unsigned units_};inline double Sales_item::avg_price() const{if(units_sold)return revenue/units_elsereturn 0;}void main(){Sales_b.get_isbn();}我想编写用cin作为默认实参的构造函数,但是总是会出现如下的编译问题,rror C2664: '__thiscall std::basic_string&char,struct std::char_traits&char&,class std::allocator&char& &::std::basic_string&char,struct std::char_traits&char&,class std::allocator&char& &(const class std::allocator&char& &)'
: cannot convert parameter 1 from 'class std::basic_istream&char,struct std::char_traits&char& &' to 'const class std::allocator&char& &'
Reason: cannot convert from 'class std::basic_istream&char,struct std::char_traits&char& &' to 'const class std::allocator&char&'
No constructor could take the source type, or constructor overload resolution was ambiguous请好心人指教
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
采纳数:313
获赞数:830
试了一下,这样确实要报错。改成 Sales_item( istream &is=cin):units_sold(0),revenue(0.0){ is && }就可以了。手头只有电子第三版的C++ Primer,找了下没发现这个练习题啊。不知道你看的什么版本的习题解答,个人认为此处它的写法有问题,另外,main函数应该有int型的返回值的,写成void main是非常不规范的。
谢谢了,我昨天也发现了这个问题,is我设的是一个输入流的引用,确实不能用赋值语句。我用的是第四版,谢谢了。
采纳数:197
获赞数:426
超出我的范围
雨后必有阳光
雨后必有阳光
采纳数:45
获赞数:159
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c++中vector含有自己定义的类,定义构造函数时出错_百度知道
c++中vector含有自己定义的类,定义构造函数时出错
classWindows_mgr{public:Windows_mgr(vector&Screen&scr{Screen(24,80,0,'')}):Screens(scr){}typedefvector&Screen&::size_typeScreenIvoidclear(ScreenIndex);private:vector...
class Windows_mgr { public:
Windows_mgr(vector&Screen&scr{Screen (24,80,0,' ')}):Screens(scr){}
typedef vector&Screen&::size_type ScreenI
void clear(ScreenIndex); private:
vector&Screen& S }第四行始终提示
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
<span class="wgt-replyer-all-uname
" data-href="https://zhidao.baidu.com/usercenter?uid=1d705e5920365
<span class="wgt-replyer-all-card-name3 wgt-replyer-all-card-names" data-href="https://zhidao.baidu.com/usercenter?uid=1d705e5920365
采纳数:1231
获赞数:707
怎么非要这么写呢//下面这样写就好了呀Windows_mgr(){&&&&Screens.emplace_back(Screen(24,80,0,&#39;&&#39;));}
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C++构造函数内出现异常怎么办
[问题点数:20分,结帖人EisenHammer]
本版专家分:22
结帖率 100%
CSDN今日推荐
本版专家分:7267
本版专家分:7103
本版专家分:200
本版专家分:18871
2002年7月 C/C++大版内专家分月排行榜第二
本版专家分:1683
本版专家分:468
本版专家分:2005
本版专家分:196
本版专家分:1893
本版专家分:13319
2005年7月 C/C++大版内专家分月排行榜第一2005年6月 C/C++大版内专家分月排行榜第一
2005年9月 C/C++大版内专家分月排行榜第二
本版专家分:0
本版专家分:5382
本版专家分:2634
本版专家分:18871
2002年7月 C/C++大版内专家分月排行榜第二
本版专家分:13319
2005年7月 C/C++大版内专家分月排行榜第一2005年6月 C/C++大版内专家分月排行榜第一
2005年9月 C/C++大版内专家分月排行榜第二
本版专家分:77
本版专家分:1
本版专家分:86
匿名用户不能发表回复!
其他相关推荐

我要回帖

更多关于 过滤器对发生错误的处理 的文章

 

随机推荐