什么';初始化一个未命名的C++;参数 初始化一个未命名的C++参数有什么意义?例如: void foo(int = 0) {}

什么';初始化一个未命名的C++;参数 初始化一个未命名的C++参数有什么意义?例如: void foo(int = 0) {},c++,parameters,initialization,C++,Parameters,Initialization,它将用作默认参数值。它属于函数声明。它将用作默认参数值。它属于函数声明。我可以想象,在回调函数的上下文中,构造可能很有用: #include <iostream> // Please assume the callback is an external library: typedef void (*callback_function)(int); callback_function callback; void foo(int = 0) { std::cout <

它将用作默认参数值。它属于函数声明。

它将用作默认参数值。它属于函数声明。

我可以想象,在回调函数的上下文中,构造可能很有用:

#include <iostream>

// Please assume the callback is an external library:
typedef void (*callback_function)(int);
callback_function callback;

void foo(int = 0) {
    std::cout << "Hello\n";
}

int main() {
    callback = foo;
    callback(1);
    foo();
}
#包括
//请假定回调是一个外部库:
typedef void(*回调函数)(int);
回调函数回调;
void foo(int=0){

std::cout我可以想象,在回调函数的上下文中,构造可能很有用:

#include <iostream>

// Please assume the callback is an external library:
typedef void (*callback_function)(int);
callback_function callback;

void foo(int = 0) {
    std::cout << "Hello\n";
}

int main() {
    callback = foo;
    callback(1);
    foo();
}
#包括
//请假定回调是一个外部库:
typedef void(*回调函数)(int);
回调函数回调;
void foo(int=0){

std::cout声明不需要参数名。但是,定义需要参数名。而且,默认参数不能在定义中重复。下面是一个小程序,它可以工作(但我不知道您为什么要这样做,真的…):


声明不需要参数名。但是定义需要。而且,默认参数不能在定义中重复。下面是一个小程序,它可以工作(但我不知道您为什么要这样做,真的…):


如果代码找不到该值(因为没有名称可以访问它),那么默认值是无用的,不幸的是,问题中的代码行确实可以编译。@泰勒:因为定义中的未命名参数是什么时候被禁止的?我经常使用它们来避免未使用的变量警告。如果代码找不到该值,默认值是无用的(因为没有名字可以访问它),不幸的是问题中的代码行是可以编译的。@泰勒:从什么时候开始定义中禁止使用未命名的参数?我经常使用它们来避免未使用的变量警告。这样做没有任何价值,除了愚蠢地打赌它是否可以编译(假设大多数人都不相信这样一个无用的构造会被编译)。这真的没有意义。你在哪里看到过它?如果编译器没有发出警告,我会感到非常惊讶。我现在看到了一个很好的例子,当使用
std::enable_if
和函数参数时。From:
模板T foo2(T,typename std::enable_if::type*=0){return T;}
这样做没有任何价值,除非对它是否会编译进行愚蠢的打赌(假设大多数人不相信这样一个无用的构造会编译)。这真的没有什么意义。你在哪里见过它?如果编译器没有发出警告,我会感到非常惊讶。我现在看到了一个很好的例子,当使用函数参数使用
std::enable_if
时。From:
template T foo2(T,typename std::enable_if::type*=0){return T;}
谢谢。但是为什么我没有:
typedef void(*callback\u function0();callback\u function0 callback0;void foo0(){std::cout@user2023370假设回调是一个外部库谢谢。但是为什么我没有:
typedef void(*callback\u function0();callback\u function0 callback0;void foo0(){std::cout@user2023370假设回调是一个外部库
5
3