为什么有必要在函数定义中包含返回类型,即使它在声明中指定了?

joh*_*doe 7 c++

当您在单独的cpp文件中定义函数时,如果编译器知道某个方法不能使具有相同签名的另一个方法(仅因返回类型不同)重载另一个方法,为什么需要返回类型来指示您要定义哪个特定函数?是不是foo :: bar(params)足以指定这个?

头文件

class foo{
public:
void bar();
};
Run Code Online (Sandbox Code Playgroud)

源文件

foo::bar() //equivalent to function declaration? throws error
{...}
Run Code Online (Sandbox Code Playgroud)

谢谢

Pet*_*ker 10

我认为没有任何固有的理由不能做到这一点,但使用它会导致不一致.毕竟,如果函数的定义可见,则不必声明函数,但在这种情况下,您必须包含返回类型.所以具有前面声明的函数定义不需要返回类型,但是函数定义不需要返回类型.如果您删除了声明,则必须重写定义.总是太多摆弄.

编辑:当你看到函数的定义时,更不用说在你面前有返回类型的便利性.