5

Herb Suttter C++ コーディング標準は、関数内の未使用の引数名を削除して、ゼロ警告プログラムを作成することをお勧めします。

例:

int increment(int number, int power=0){
   return number++;
}

する必要があります

int increment(int number, int /*power*/=0){
   return number++;
}

引数に「未使用変数警告」があるpower場合。これはプログラムでは問題なく機能します (コンパイル エラーは発生しません)。そのため、新しい関数定義は次のようになります。

int increment(int number, int =0)

ではint=0、コンパイラにとって何を意味するのでしょうか?

4

2 に答える 2

4

デフォルト値が 0 の名前のない仮パラメーター。

最初のケース (最も一般的な) はfunction-declaration、次のような使用法です。

int increment(int, int = 0);

定義では、パラメーターに名前が付けられます。

int increment(int number, int power)
{
   //
}

2 番目のケースは、デバッグ目的、まだ実装されていない一部の機能、またはダミー関数の使用です。

于 2013-04-01T07:16:36.690 に答える
2

もちろん、これがスタンドアロン関数である場合は、最後のパラメーターをコメントアウトしてメソッドのシグネチャを変更できます

int increment(int number/*, int power=0*/);

ただし、次の場合にはメソッドのシグネチャを変更しないでおくことができます。

  • これは、基本クラスで宣言されたメソッドをオーバーライドするメソッドです
  • これは、変更したくないモジュールのパブリック インターフェイスの一部です。

また、名前のないパラメーターのデフォルト値は、関数宣言で使用し、後で cpp ファイルのどこかでその変数に名前を付ける場合に役立ちます。

// Forward declaration
int increment(int number, int =0);

// Somewhere in cpp file:
int increment(int number, int power)
  {
  return pow(number, power);
  }
于 2013-04-01T07:34:56.050 に答える