如何从c 中的异常类中定义what what what whate()函数

How to define the what() function in derived class from exception class in C++?

本文关键字:what whate 函数 定义 异常      更新时间:2023-10-16

在此代码中:

#include <iostream>
#include <exception>
using namespace std;
class myexception : public exception
{
     virtual const char* what() const throw()  //<---**** Stared statement.
    {
     return "My exception happened";
    }
};

凝视语句是什么意思。使用 const 关键字和类型 char*

的原因是什么

我与两个const关键字感到困惑。我知道const的基本用途,例如声明一个将存储不变值的变量.....有点像#define,但是当它与函数一起使用时(例如在参数中)时,它会令人困惑。我对Char*而不是Char的用法感到困惑。另外,在throw()之前指定const的目的是什么?

[更新]由于作者提出了更多问题,我将使用两个部分更新答案。

首先,此函数是 std::exception::what()的覆盖函数,基本函数是这样定义的,因此被超级版本必须是相同的语法。

然后让我们将语句分为两个部分。

  1. 返回值const char*
  2. what() const throw()之后的部分

首先,检查返回语句return "My exception happened";,它正在返回类似const c的字符串,类型为 const char*,因此返回值是这样定义的。

第二,what()之后的const表示是const函数,不会修改类的任何成员(虽然mutable除外)。throw()意味着它永远不会投掷。

const char*表示呼叫者()将接收一个字符串,并且将无法更改字符串(指针指向的字符)。这是std :: exception :: whit what()的重大效力,因此您可以将新的解释返回到自己的例外(这就是为什么您必须返回const char*,原始方法也是如此)