我看到一个代码,其中一个int变量在像
这样的函数中声明int func(vector<int> a, int lum=0) {...}
我正在寻找一个任何人都可以使用它的想法或逻辑。因为它感觉很奇怪。还告诉我它是否是正确的编码方式或编码器是完全愚蠢的?c
答案 0 :(得分:3)
这称为“默认参数”。也就是说,如果用户没有将第二个值传递给func
,则函数将接收0
例如:
int func(std::vector<int> a, int lum=0)
{
std::cout << "Received lum value: " << lum << std::endl;
}
int main(){
std::vector<int> a = {1, 2, 3};
func(a); // "Received lum value: 0"
func(a, 2); // "Received lum value: 2"
}
cppreference有一个很好的页面。
所有默认参数必须出现在函数声明的最后,如果您选择单独声明和定义,则不应再次出现在函数的定义中:
int func(std::vector<int> a, int lum=0); // declaration
// ...
int func(std::vector<int> a, int lum){ // definition, no default arguments
//...
}