C++函数原型和变量名与数据类型的区别

5
在C++中声明函数原型时,以下两种方式有什么区别:

void SomeFunction( int Argument ) 
{
    //Stuff
} 

对比

void SomeFunction( int ) 
{
    //Stuff
} 

我想问的是,为什么在函数原型中写入变量参数名而不仅仅是数据类型?

5个回答

5

在函数声明中,编译器不需要参数名称。这只是为了人类阅读方便而设定的。它们提供了关于函数正在执行的额外信息。良好的函数名称与良好的参数名称结合使用,可以作为方法的即时文档。


3

如果你真正要使用参数,你需要给它一个参数名。一些编译器(例如Microsoft VC++)会在函数中命名参数但未在任何地方使用时发出警告。

P.S. 在你的例子中使用的不是一个原型,而是实际的函数定义。在原型中,参数名纯粹是可选的。


2
关于“声明”和“定义”的区别,还有一点需要补充说明。 你的例子都是定义:
void SomeFunction( int Argument ) 
{
    //Stuff
} 

一个原型将是一个声明,它看起来像这样:

void SomeFunction( int ) ;

因此,您可以在标题中声明如上。然后在cpp文件中,您可以这样定义函数:
void SomeFunction( int Argument ) 
{
    Argument = Argument + 1;
} 

正如您所看到的,声明没有指定参数名称,但是定义则指定并使用了它。


1

在定义时,您不必写参数名称,也不必在声明中写。如果您这样做,它们甚至不需要是相同的。只有在计划实际使用参数时才需要编写一个参数。


0

函数原型不需要参数名称,但需要变量的类型。以下每个都是有效的:

void function(int);

void function(int param);

原型用于您可以以任何顺序定义函数。但是,如果要查看参数名称(例如当您悬停在函数上时),则名称必须在原型中。如果没有原型,则将从定义中看到名称。

如果没有原型,则函数定义可以充当声明,但必须在调用函数之前定义。当然,定义中的变量名称将被使用。

参数必须在定义中具有名称,但在原型中名称是可选的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接