gpt4 book ai didi

c++ - 无法理解此 C++ 表达式的语法/结构

转载 作者:行者123 更新时间:2023-11-30 02:22:58 25 4
gpt4 key购买 nike

请让我澄清一下,我在解释问题时可能会使用不正确的术语。请耐心等待 - 请指出缺陷,但我希望我的问题的本质在字里行间得到了传达。

#include <iostream>
#include <exception>
using namespace std;

struct MyException : public exception {
const char * what () const throw () {
return "C++ Exception";
}
};

int main() {
try {
throw MyException();
} catch(MyException& e) {
std::cout << "MyException caught" << std::endl;
std::cout << e.what() << std::endl;
} catch(std::exception& e) {
//Other errors
}
}

我正在尝试学习 C++,之前学过 C。

在上面的代码中,我不明白特定行的语法:

const char * what () const throw ()

我从 here 读到的内容是吗

  1. const char * 是返回类型,指向常量字符的指针,按照惯例,它是零终止字符串数组的第一个字符。

  2. 函数名是什么

  3. ()为空参数列表,表示该函数不带参数

  4. const 限定函数,因此可以在const 对象上调用,不能直接修改对象的成员

    <
  5. throw () 是一种异常规范,可防止它抛出任何异常。

但我不明白的是:

在C中引用函数时,我们将它们定义为

return_type function_ name
{function_body;
}

所以虽然我理解 const char * 是这里的返回类型;因此 what 必须是 function_name;我不明白函数体是什么部分。

我最近才知道 C++ 中的 throw 函数;但是为什么在what之后有一个'()'呢?如果 throw() 是一个函数,那么它的返回类型是什么?我们是在这里定义 throw() 还是在这里定义 what()

最佳答案

这是一个已弃用的动态禁止抛出说明符。参见 here .它不是额外的函数调用。它更确切地说指定了这个函数的行为方式,在这种情况下,它是否抛出异常,而在这种特殊情况下它不会抛出异常。

关于c++ - 无法理解此 C++ 表达式的语法/结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46681606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com