初始化未命名的C ++参数有什么意义?

时间:2014-04-14 20:19:34

标签: c++ parameters initialization

初始化未命名的C ++参数有什么意义?例如:

void foo(int = 0) {}

3 个答案:

答案 0 :(得分:2)

声明不需要参数名称。但是,定义确实如此。此外,默认参数不能在定义中重复。这是一个有效的小程序(但我不知道你为什么要这样做,真的......):

#include <iostream>

void foo(int = 5);

int main() {
    foo();
    foo(3);

    return 0;
}

void foo(int i) {
    std::cout << i << std::endl;
}

输出

5
3

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

#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();
}