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

时间:2015-03-12 21:18:06

标签: c++ methods syntax signature

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

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

什么是" const throw()"部分用于?我还没有看到方法名称/参数和大括号之间有什么东西。

1 个答案:

答案 0 :(得分:2)

那些是说明者。他们描述了该方法在编码环境中的工作原理

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

如果您尝试在const对象上运行非const方法,或者如果您尝试从const方法修改对象,则您的代码将无法编译,并且编译器会告诉您说您做错了。

throw()表示该方法不会抛出异常。它从C ++ 11开始被noexcept取代。

就我而言,在需要时包括这些关键词是一件非常好的事情。它为代码本身添加了对预期行为的描述,并在您做错事时帮助获得更清晰的编译器错误。

它还有助于编译器进行一些优化。