cpp-decl-and-defi-default-para

本文最后更新于 2024年3月21日 上午

C++ 函数声明与定义中的缺省参数

实践

无论是非内联函数还是内联函数,缺省参数均只能定义在函数的声明语句中,如下面的程序段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>

class demoClass {
public:
int classFun(int num=100);
};

int fun(int num=100);

int main() {
std::cout << fun(10) << std::endl;
return 0;
}

int demoClass::classFun(int num) {
return num;
}

int fun(int num) {
return num;
}

如果在函数定义中继续进行缺省参数初始化,则会报错重定义缺省参数 Redefinition of default argument

Redefinition of default argument

理论

编译时,编译器会查找函数的声明来获取该函数的签名信息,包括:参数类型和返回类型,并不关心函数体的内容。假如只在函数定义中定义了缺省参数,在函数声明时没有定义缺省参数,此时在调用该函数时没有传递参数,由于编译器在编译函数调用时只会寻找函数声明语句而不关心函数定义,就会发生无法寻找到目标函数的错误:

无法寻找到目标函数

总结

无论是非内联函数(全局函数)还是内联函数(成员函数),缺省参数都只能定义在函数声明的参数列表中,而不能只在函数声明中重复定义或者只在函数定义中定义缺省参数值


cpp-decl-and-defi-default-para
https://blog.dwj601.cn/BackEnd/cppBasic/cpp-decl-and-defi-default-para/
作者
Mr_Dwj
发布于
2024年3月21日
更新于
2024年3月21日
许可协议