缺省函数(默认函数)
void my_setlocale(int category, const char* locale = "chinese") {
cout << category << " " << locale << endl;
}
int main() {
my_setlocale(LC_ALL);
setlocale(LC_ALL, "chinese");
wprintf(L"你好");
return 0;
}
上面进行定义其实就是进行默认参数的设置,在调用时不用管他了
而要修改的话,一样调用就可以

甚至可以一个参数都不要

但不能越过前面的直接修改后面的默认参数
同时声明和定义不能同时定义默认函数,缺省参数最好放在声明中。
函数 在维护性好,节省空间(场景)但是性能低
那么类似简单运算,运算写在代码当中性能更好,但相对维护性差。
而宏解决维护性方面的问题。
但是在需要内存申请的时候,函数性价比大部分时候优于宏。
函数永远就100000个字节,而宏定义几次,搞多少字节出来

同时带参宏有些参数类型bug,且无法调试
内联函数
由于我们无法知道什么时候使用函数或者宏性价比高,所以有了内联函数,编译器会估算性能的使用,选择以宏的方式进行函数展开(等于说在调用处展开内联函数实现代码,并替换参数),或者以函数进行调用。
最好放在.h
所以是由编译器决定是否内联。
#include<iostream>
using namespace std;
void my_setlocale(int category = LC_ALL, const char* locale = "chinese") {
cout << category << " " << locale << endl;
}
inline int my_sub(int n, int m) {
return n - m;
}
int main() {
cout << my_sub(2, 1) << endl;
return 0;
}
要注意的是调试版必定不内联(方便调试)
如下图两张对比


名称粉碎和对应解码程序uname.exe