我是C++的初学者,因此对这个愚蠢的问题表示歉意。我在这里发布它,因为我无法在stackoverflow上找到类似的答案。在自定义异常的方法/构造函数签名中带和不带throw()的C++

我是通过在C++和我正在做一些手与自定义异常例外进步,我有这样的代码

class MyException: public std::exception{

public:

virtual const char* what() const throw() {

return "something bad happened";

}

};

// class that throws above exception

class canGoWrong {

public:

canGoWrong(){

throw MyException();

}

};

上面的代码被老师表示。构造函数刚刚实现了在基类exception中定义的虚函数。我到了那里。

现在,当我尝试使用不同的版本进行练习时,我尝试使用自定义函数而不是重新定义虚拟(因为C++没有严格执行接口的概念,如果我在这里错了,请纠正我的错误。)

我写它作为

class my_custom_shit_exception: public std::exception {

public:

const char* show() { // I omitted the const throw() here

return "This is an error encountered\n";

}

};

class myclass {

public:

myclass() {

throw my_custom_shit_exception();

}

};

总之,我没有发现这两种方式在活动的差异

public:

const char* show() {

return "This is an error encountered\n";

}

virtual const char* what() const throw() {

return "something bad happened";

}

那么为什么在what()虚函数中使用const throw()?它有什么不同?

谢谢大家。

+3

“因为C++没有严格执行接口的概念”它的确适用于纯虚函数,如果这就是你的意思。 –

+1

你省略的throw()是一个'异常说明'它告诉编译器该函数不会抛出任何异常,'what()'函数即不说它强制执行。为了清楚起见,请阅读异常规范。 –

+1

非常有趣的问题。这不是同一个问题,但我认为[这个是有帮助的](https://stackoverflow.com/questions/5230463/what-does-this-function-declaration-mean-in-c) –

linux 构造函数 throw,在自定义异常的方法/构造函数签名中带和不带throw()的C++...相关推荐

  1. Linux安装 VMware tools 工具的方法(转,已测试成功)

    Linux安装 VMware tools 工具的方法 VMware虚拟机中如何安装VMWare-Tools详解好处:可以支持图形界面,可以支持共享文件功能等 1 工具/原料 1)安装过虚拟机软件的计算 ...

  2. 总结 构造函数与非构造函数 原型继承的一个方法

    这两天真的一直在看原型以及继承之间的千丝万缕,哇,收获颇多,不过所谓温故知新,还是要多复习复习知识点,才能察觉那些之前不易发现的小小sparkle 真心推荐MDN文档--对象原型,JavaScript ...

  3. JavaScript 面向对象编程(二) —— 构造函数 / 原型 / 继承 / ES5 新增方法

    本篇为 JavaScript 进阶 ES6 系列笔记第二篇,将陆续更新后续内容.参考:JavaScript 进阶面向对象 ES6 :ECMAScript 6 入门 : Javascript 继承机制的 ...

  4. ES6/02/创建对象,构造函数和原型,原型和原型链,this指向,类,ES5新增的方法,数组方法,回调函数,ES5新增的字符串方法,ES5中新增的对象方法

    创建对象 1,利用new Object()创建对象 var obj1 =new Object(); 2,利用对象字面量创建对象 var obj2={}; 3,利用构造函数创建对象 function S ...

  5. -1-6 java 异常简单介绍 java异常 异常体系 Throwable 分类 throws和throw 异常处理 自定义异常...

    异常 异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象. 其实就是Java对不正常情况进行描述后的对象 ...

  6. php构造函数里抛出异常_php-在类的构造函数中返回值

    php-在类的构造函数中返回值 到目前为止,我有一个带有构造函数的29447791671682017201728类 public function __construct ($identifier = ...

  7. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile 构造函数及相关调用函数 | Android 源码中查找 native 函数 )

    文章目录 一.DexFile 构造函数 二.DexFile.openInMemoryDexFile 函数 三.Android 源码中查找 native 函数 一.DexFile 构造函数 上一篇博客 ...

  8. 构造函数调用默认构造函数_显式无参数构造函数与默认构造函数

    构造函数调用默认构造函数 大多数不熟悉Java的开发人员都会Swift了解到,如果他们没有指定至少一个显式构造函数,则会为Java类隐式创建一个" 默认构造函数 "( 由javac ...

  9. JAVA构造函数是不是封装_Java 封装与构造函数

    面向对象思想思想的三个特征:封装,继承,多态. 封装: 表现:函数就是一个最基本的封装体,类也是一个封装体. 好处:1.提高了代码的复用性, 2.隐藏了实现细节,可以对外提供可以访问的方法,便于调用者 ...

最新文章

  1. 【廖雪峰python入门笔记】break和continue
  2. 苹果怎么换行打字_停课不停学!苹果电脑学习类软件推荐,丰富您的假期生活...
  3. JAVA中复制数组的方法
  4. JMeter断言介绍
  5. oracle备份数据库视频,Oracle数据库还原
  6. Asp.Net登陆记住用户功能实现
  7. arcgis将小于0的数值设置成0.01
  8. 面试题 02.06. 回文链表
  9. mysql5.5.17源代码安装
  10. 安卓iccid_Android 获取双卡手机IMEI,IMSI,ICCID
  11. LeetCode之寻找峰值
  12. NTLDR的故事:用途和常见故障分析方法
  13. OpenCV 图片模糊处理
  14. python大作业 课设
  15. 下周把交接文档做完就交接实习结束离职了
  16. 开源机器人SmallRobotArm机器人源码解读
  17. 1068 万绿丛中一点红 (C++)
  18. Android开发实现上一页,下一页显示内容
  19. DaVinci:曲线之 HSL 曲线
  20. 那些有趣又实用的开源人工智能项目 Top 10

热门文章

  1. easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13...
  2. k-means聚类算法C++实现
  3. Spring MVC学习笔记(七)
  4. Adobe Photoshop源代码以及3800万用户信息泄漏
  5. 【转】B树的插入和删除
  6. 学习: 导航器添加修饰符
  7. 如何在您的笔记本上搭建View 演示环境 -7.无线配置与连接
  8. Swing-JTree树模型的操作
  9. 华为机试HJ36:字符串加密
  10. verilog赋多位值_Verilog入门学习笔记——第一弹