Jam*_*sev 28 c++ parameters function
以下是完全合法的C++
代码
void foo (int) {
cout << "Yo!" << endl;
}
int main (int argc, char const *argv[]) {
foo(5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道,如果有一个值可以在函数中留下未命名的参数,因为它们不能在函数内引用它们.
为什么这个合法开始?
das*_*ght 40
是的,这是合法的.这对于不打算使用相应参数的实现中的基类实现虚拟:您必须声明参数以匹配基类中虚函数的签名,但您不打算使用它,所以你没有指定名称.
另一种常见的情况是,当您向某个库提供回调时,您必须符合该库已建立的签名(感谢Aasmund Eldhuset提出这个问题).
还有一个特殊情况用于定义自己的后增量和后减量运算符:它们必须具有带int
参数的签名,但该参数始终未使用.不过,这个约定接近于语言设计的黑客攻击.
650*_*502 10
当然,在声明函数时,不命名参数是合法的,但它在实现中也是合法的.当函数需要声明参数具有特定的固定签名时,最后这个显然很奇怪的版本很有用,但不需要参数.
例如,这可能发生在派生类中的方法,回调函数或模板参数中.
不为参数指定名称表明不需要该参数,并且不会使用其值.一些编译器,如果您改为命名参数然后只是不使用它将发出一个警告,可能是函数体有问题.