C++ 函数重载 默认参数 内联函数

函数重载 (overload

规则

  • 函数名相同
  • 参数个数不同、参数类型不同、参数顺序不同

注意

  • 返回值类型和函数重载无关
  • 调用函数时,实参的隐式类型转换可能会产生二义性
int sum(int v1, int v2) {
    return v1 + v2;
}
int sum(int v1, int v2, int v3) {
    return v1 + v2 + v3;
}

void func(int v1, double v2) {
    cout << "func(int v1, double v2)" << endl;
}
void func(double v1, int v2) {
    cout << "func(double v1, int v2)" << endl;
}

默认参数

C++ 允许函数设置默认参数,在调用时可以根据情况省略实惨。

  • 默认参数只能按照从左到右的顺序
  • 如果函数同时有声明、实现,默认参数只能放在函数声明中
  • 默认参数的值可以时常量、全局符号(全局函数、函数名)
int age = 28;
void test(){
    cout << "test()" << endl;
}

void display(int a = 11,int b = 22, int c = age, void (*func)() = test){
    cout << "a is " << a << endl;
    cout << "b is " << b << endl;
    cout << "c is " << c << endl;
    func();
}

如果函数的实参经常时同一个值,可以考虑使用默认参数。


内联函数 (inline function)

内联函数:编译器会将内联函数调用展开为函数体代码。

OC、C++ 都有内联函数

内联函数可以解决 函数调用效率的问题:

  • 函数调用需要开辟栈空间,有一定的时间消耗
  • 内联函数不会开辟栈空间,可以减少函数调用的开销
什么地方适合用内联函数:
  • 函数代码体积小
  • 函数频繁调用
内联函数与宏
  • 内联函数和宏,都可以减少函数调用的开销
  • 对比宏,内联函数多了语法检测和函数特性。 所以在两者都可用的地方,首选内联函数
写了 inline 关键字,函数会不会内联,还与一下因素有关
  • 递归函数不会内联
  • debug 模式一般不会内联,release 模式才会优化代码,内联
  • 函数会不会内联,还与函数体代码量有关,与编译器也有一定关系

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容