我从来都不清楚确切的声明行(通常放在头文件中)有多少使它成为函数定义的第一行。如果在定义中重复编译,某些关键字会导致编译失败,有些则不会。
作为示例,请考虑从std::exception
继承的异常类。 what()
函数的重新定义通常类似于
virtual const char* what() const throw();
好的,好的。如果我在源文件中定义它,并且我完全复制了这一行
virtual const char* what() const throw() {}
编译失败并显示“虚拟外部类声明”之类的消息。我删除“虚拟”,它编译得很好。函数声明的哪些部分需要在其定义中重复的规则是什么?静态的?排队?是否有一个参考文件简明扼要地描述了哪些部分是必要的?
答案 0 :(得分:3)
以下是对声明内容以及定义内容的非常好的解释: