2011-10-27 24 views

答えて

7

C++では、0パラメータを表すことが明確に定義されていますが、違いはありません。

しかし、(void)の関数はパラメータなしを意味し、()は任意の数のパラメータを意味します。http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fparam_decl.htm

関数定義の空の引数リストから

は機能 が引数をとらないということを示しています。関数宣言の空の引数リスト は、関数が任意の数または型の引数を取ることができることを示します。従って、関数fは引数をとらないことを示している。しかし、

int f(); 

は、パラメーターの数とタイプがわからないことを示します。 関数が引数を取らないことを明示するには、というキーワードで関数 を定義する必要があります。

+0

すばらしい説明。多くのありがとうwormsparty – iggy2012

+0

あなたは大歓迎です:) – wormsparty

1

違いはありません。私は、最初のものがより一般的で、明確で簡潔であると言いたい。

6

C++には違いはありません。
2番目の宣言は、関数がパラメータを取らないことを明示的に示しています。

Cで2番目の方がよく使用されます。最初はC++でより一般的なものです。 ()であなたはパラメータが指定されていない(引数の数は不明)であることを指定している間、(void)
が、あなたは、関数がパラメータを持たないように指定している:のでCの場合の違いがあり

ただし、関数宣言ではなく関数定義であれば、Cでも(void)と同じです。

0

C++では、違いはなく、2番目の形式はC互換性のためにのみ保持されます。最初の形式はC++で優先されます。

Cでは、それは異なることを意味します。 最初の形式は、未知数の引数を取る関数を指定し、2番目は、引数をゼロとする関数を指定します。

0

一部の非常に古い(非標準)Cコンパイラは、最初のものについて不平を言うかもしれないので、2番目のものは移植性が高くなければなりません。

それ以外は違いはありません。

最初のコードはユーザーコードでより一般的に使用されています。

0

実際には、メソッドに渡すパラメータがない場合はvoidまたは空のかっこ.noticeはパラメータを渡しただけです。あなたのメソッドには戻り値がありません。voidキーワードを使用する必要があります。最初のものはC#でより一般的です