我一直不清楚究竟有多少声明行(通常放在头文件中)使其进入函数定义的第一行。如果在定义中重复某些关键字会导致编译失败,而有些则不会。
例如,考虑一个继承自std::exception
. 函数的重新定义what()
通常看起来像
virtual const char* what() const throw();
好的。如果我在源文件中定义它,并且我准确地复制了这一行
virtual const char* what() const throw() {}
编译失败并显示类似“虚拟外部类声明”的消息。我删除了“虚拟”,它编译得很好。函数声明的哪些部分需要在其定义中重复的规则是什么?静止的?排队?是否有简明扼要地描述哪些部分是必要的参考资料?