C++ 函数声明行的哪些部分位于定义的第一行?

Posted

技术标签:

【中文标题】C++ 函数声明行的哪些部分位于定义的第一行?【英文标题】:C++ what parts of a function declaration line goes in the first line of the definition? 【发布时间】:2012-06-03 01:21:41 【问题描述】:

我一直不清楚有多少声明行(通常放在头文件中)进入函数定义的第一行。如果在定义中重复某些关键字会导致编译失败,而有些则不会。

例如,考虑从std::exception 继承的异常类。 what() 函数的重新定义通常看起来像

virtual const char* what() const throw();

好的,好的。如果我在源文件中定义它,并且完全复制这一行

virtual const char* what() const throw() 

编译失败并显示类似“虚拟外部类声明”的消息。我删除了“虚拟”,它编译得很好。函数声明的哪些部分需要在其定义中重复的规则是什么?静止的?排队?有没有简明扼要地描述哪些部分是必要的参考资料?

【问题讨论】:

问题不在于说明符,而在于您没有定义类方法(名称不是例如std::exception::what)。至于什么是必要的,什么是不必要的,会有人引用标准。 【参考方案1】:

这里很好地解释了声明和定义的内容:

http://msdn.microsoft.com/en-us/library/fash2fc6.aspx - 声明语法 http://msdn.microsoft.com/en-us/library/c4d5ssht.aspx - 定义语法

【讨论】:

以上是关于C++ 函数声明行的哪些部分位于定义的第一行?的主要内容,如果未能解决你的问题,请参考以下文章

未定义标识符/未声明

C++,2参数类模板的部分特化:无法将函数定义与现有声明匹配

C语言函数定义和说明的格式

C++ 函数调用方法和书写格式.

在节的最后一行添加一个表格视图单元格

友元函数都有哪些特点?