c++函数原型和变量名与数据类型

C++ Function Prototypes aAnd Variable Names Versus Data Types Only

本文关键字:数据类型 变量名 函数 原型 c++      更新时间:2023-10-16

在c++中声明函数原型时,有以下区别吗?

void SomeFunction( int Argument ) 
{
    //Stuff
} 

void SomeFunction( int ) 
{
    //Stuff
} 

本质上我想问的是,为什么你在函数的原型中写一个变量参数名,而不仅仅是数据类型?

在函数声明中编译器不需要参数名。它是供人类食用的。它们给出了函数正在做什么的附加信息。好的函数名加上好的参数名可以作为方法的即时文档。

如果要实际使用参数,则需要一个参数名称。有些编译器(例如Microsoft vc++)如果你命名了一个参数,但没有在函数的任何地方使用它,会给你一个警告。

注:您在示例中使用的不是原型,而是实际的函数定义。在原型中,参数name完全是可选的。

关于"声明"answers"定义"的区别的附加注释。以下两个例子都是定义:

void SomeFunction( int Argument ) 
{
    //Stuff
} 

原型应该是一个声明,看起来像这样:

void SomeFunction( int ) ;

所以,你可以在你的头文件中有一个如上的声明。然后在您的cpp中定义如下函数:

void SomeFunction( int Argument ) 
{
    Argument = Argument + 1;
} 

如你所见,声明没有指定参数名,但是定义指定了它并使用了它。

您不必在定义或声明中写入参数名称。如果是这样,它们甚至不需要相同。如果您计划实际使用该参数,则必须编写一个。

函数原型不需要参数名,但它需要变量的类型。

void function(int);
void function(int param);
使用原型是为了让你可以按任何顺序定义函数。但是,如果您想要查看参数名称(比如当您将鼠标悬停在函数上时),这些名称必须在原型中。如果您没有原型,您将看到定义中的名称。

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

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