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)
{
   //
}

第二种情况是用于调试目的,或用于尚未实现的某些功能,或用于虚拟功能。

于 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 回答