美文网首页
C++ 函数重载 默认参数 内联函数

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

作者: hank009 | 来源:发表于2020-12-15 11:50 被阅读0次

    函数重载 (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 模式才会优化代码,内联
    • 函数会不会内联,还与函数体代码量有关,与编译器也有一定关系

    相关文章

      网友评论

          本文标题:C++ 函数重载 默认参数 内联函数

          本文链接:https://www.haomeiwen.com/subject/mpzigktx.html