如何从c 中的异常类中定义what what what whate()函数
How to define the what() function in derived class from exception class in C++?
在此代码中:
#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()
的覆盖函数,基本函数是这样定义的,因此被超级版本必须是相同的语法。
然后让我们将语句分为两个部分。
- 返回值
const char*
-
what() const throw()
之后的部分
首先,检查返回语句return "My exception happened";
,它正在返回类似const c的字符串,类型为 const char*
,因此返回值是这样定义的。
第二,what()
之后的const
表示是const函数,不会修改类的任何成员(虽然mutable
除外)。throw()
意味着它永远不会投掷。
const char*表示呼叫者()将接收一个字符串,并且将无法更改字符串(指针指向的字符)。这是std :: exception :: whit what()的重大效力,因此您可以将新的解释返回到自己的例外(这就是为什么您必须返回const char*,原始方法也是如此)
相关文章:
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 什么是 std::exception::what() 以及为什么要使用它?
- what(): basic_string::_M_construct null not valid
- what(): basic_string::_M_construct 空无效错误
- What is unordered_set in C++
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- 自定义runtime_error,如果我在 #what 中使用#c_str(),则错误输出始终为空
- 在抛出 what() 的实例后调用'std::logic_error'终止:basic_string::_M_construct 空无效
- "what does ":*** [可执行文件] 错误 1 " mean ?"
- What is the std::chrono::time_point equivalent of std::numer
- WIC 工厂将始终在 Windows7 上为 nullptr("What's a Creel?"教程中使用)
- 自定义派生的 std::exception 类的 'what' 函数返回神秘的废话
- What is std::vector::_emplace_back_slow_path / std::vector::
- 在抛出 'std::invalid_argument' 的实例后终止调用 what(): stoi (找不到问题所在)
- "terminate called after throwing an instance of std::invalid_argument' what(): stoi ?"
- "Include What You Use"
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- 在抛出 'std::bad_weak_ptr' 的实例后终止调用 what(): bad_weak_ptr?
- X3, what is attr_gen?
- 如何从c 中的异常类中定义what what what whate()函数