C++ 中方法签名在结束括号和开始大括号之间的部分是什么?

What is the part of a method signature in C++ between the ending parenthesis and beginning curly bracket?

我开始学习 C++,方法签名中有一些我以前从未见过的语法。这是一个例子:

const char * what() const throw() { return msg; }

"const throw()" 部分有什么用?我还没有看到方法 name/parameters 和大括号之间有任何内容。

这些是说明符。他们描述了该方法如何在编码环境中工作

const 表示该方法不会修改对象。如果你有一个 class A,所有方法都可以 运行 在类型为 A 的对象上,但只有 const 方法可以 运行 const A.

类型的对象

如果您尝试 运行 const 对象上的非 const 方法,或者如果您尝试从 const 方法修改对象,您的代码将不会编译,编译器会告诉您做错了什么。

throw()表示该方法不会抛出异常。自 C++11 起,它已被 noexcept 取代。

在我看来,在需要时包含此类关键字是一件非常好的事情。它将预期行为的描述添加到代码本身,并有助于在您做错事情时更清楚地了解编译器错误。

它也帮助编译器做一些优化。