我开始学习C ++,并且在方法签名中有一些我以前没见过的语法。这是一个例子:
const char * what() const throw() { return msg; }
什么是" const throw()"部分用于?我还没有看到方法名称/参数和大括号之间有什么东西。
答案 0 :(得分:2)
那些是说明者。他们描述了该方法在编码环境中的工作原理
const
表示该方法不会修改该对象。如果您有一个类A
,则所有方法都可以在A
类型的对象上运行,但只能在const
类型的对象上运行const A
个方法。
如果您尝试在const对象上运行非const方法,或者如果您尝试从const方法修改对象,则您的代码将无法编译,并且编译器会告诉您说您做错了。
throw()
表示该方法不会抛出异常。它从C ++ 11开始被noexcept
取代。
就我而言,在需要时包括这些关键词是一件非常好的事情。它为代码本身添加了对预期行为的描述,并在您做错事时帮助获得更清晰的编译器错误。
它还有助于编译器进行一些优化。