我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:金算盘心水论坛 > 抛出异常 >

关于c++异常抛出

归档日期:07-27       文本归类:抛出异常      文章编辑:爱尚语录

  如图,我就是搞不懂这个继承的exception是什么,然后下一句的constchar*what(void)constthrow()又是什么意思,哪里来的。然后第一个const是返回常量字符窜,第二个const又是干嘛的。...

  如图,我就是搞不懂这个继承的exception是什么,然后下一句的const char * what(void)const throw()又是什么意思,哪里来的。然后第一个const是返回常量字符窜,第二个const又是干嘛的。三个问题,一一回答,谢谢!!

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  what()用来返回一个字符串,用来描述异常的,是exception中的一个虚函数。

  第二个const的意思是此函数不会改变类中变量的值。如果不另const,这个函数就不能被常对象调用。更多追问追答追问请问为什么要用public: exception 我刚进去看了下源码,这个代码的作用仅仅是做了覆盖,既然要做覆盖。我干嘛不直接申请一个新类直接抛出异常呢,为啥还需要exception呢?追答

  用public是为了在派生类中能访问从基类继承下来的公有成员。如果你用protected或者private来继承,那么那个what()函数就不能被访问了。

  你当然可以自己直接定义一个新的异常类,但标准库中的异常都是从这个类继承下来的。显然用这个基类在使用try{}catch(){}语句的时候更方便。只需要写成

  这样所有被抛出的exception的派生类都可直接转换为exception,但这些派生类必须是以public方式继承的,否则就无法转换为exception。

本文链接:http://izytravel.com/paochuyichang/575.html