2011-10-12 6 views
4

C++の関数のプロトタイプを宣言するときにデータ型対\変数名をプロトタイプ以下の違いがあります:C++関数は

void SomeFunction(int) 
{ 
    //Stuff 
} 

void SomeFunction(int Argument) 
{ 
    //Stuff 
} 

基本的に私は何をなぜ、データ型ではなく関数のプロトタイプに可変引数名を書くのですか?

答えて

1

定義にも宣言にも引数名を記述する必要はありません。あなたがそうした場合、彼らは同じである必要はありません。あなたが実際に引数を使用する予定の場合は、それを書く必要があります。

2

実際に引数を使用する場合は、引数名が必要です。いくつかのコンパイラ(Microsoft VC++など)は、引数に名前を付けても、関数内のどこでも使用しないと警告を出します。

P.S.あなたの例で使ったことは、プロトタイプではなく実際の関数定義です。プロトタイプでは、引数名は純粋にオプションです。

4

関数宣言でコンパイラに引数名は必要ありません。それは人間の消費のためです。彼らは機能が何をしているのかについての追加情報を提供します。適切な引数名と結合された良い関数名は、メソッドのインスタントドキュメントとして役立ちます。

2

「宣言する」と「定義する」の相違に関する追加のコメント。あなたの例の両方が定義されている :プロトタイプはdeclararationだろうとこのようになります

void SomeFunction(int Argument) 
{ 
    //Stuff 
} 

:だから

void SomeFunction(int) ; 

、あなたはあなたのヘッダーに上記のような宣言を持つことができます。あなたは宣言は、引数名を指定していませんが、定義は、それを指定して、それを使用して見るように

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

:次に、あなたのcppであなたは、このように関数を定義します。