C++标准语言day02

一、函数重载

    1、什么是函数重载

        在同一作用域下,函数名相同、参数列表(参数个数或类型)不同的函数构成重载关系

        函数重载与返回值类型、参数名无关

    2、C++是如何实现函数重载的

        通过g++ -S xxx.cpp 生成汇编代码得知,编译器会把函数的参数类型缩写后追加到函数名后面,

            也就是说编译时会给函数进行换名

    3、extern "C"

        因为C++编译器在编译函数调用语句时,会找换名后的函数调用,这样就无法调用到已经使用C编译成功的函数了

        使用 extern "C" 会让C++编译器按照C编译器的格式来翻译函数名,这样函数的声明与定义就匹配,

            就可以正确地调用C标准库、系统库函数

    4、重载和隐藏

        在同一作用域下,函数名相同、参数不同的函数构成重载关系

        在不同作用域(父子类)下的同名函数遵循名字隐藏原则

    5、参数的类型转换

        当调用函数时,编译器会优先调用类型最精确的函数,如果没有则会做一定程度的类型提升,而不是全部直接报错  

        但具体优先级与编译器有关,因此最优选择最准确的参数即可,否则容易产生函数调用的二义性  

二、默认形参

    1、什么是默认形参

        C++中可以给函数的参数设置默认值,当函数调用者提供了实参则使用实参,如果没有提供则使用默认值

    2、默认形参要靠右

        如果函数有多个参数,设置了默认形参,必须遵循从右往左依次设置,否则有二义性

    3、只能在函数声明处设置默认形参

        如果函数声明与定义分开实现,只能在函数声明时设置默认形参,否则语法错误

    4、默认形参可能会影响函数重载的效果

        如果对同名函数进行了重载,又设置了默认形参,则调用时可能会有冲突

        因此为重载过的函数设置默认形参时一定要小心

三、内联函数

    1、普通函数

        普通函数会被翻译成二进制指令存储在代码段中,调用语句会生成一句跳转指令,并让程序跳转到该函数所在代码段处运行

            运行结束再返回

    2、内联函数

        内联函数也会被翻译成二进制指令,调用语句不会生成跳转指令,而是直接把函数的二进制指令替换调用语句

            这样既没有跳转也没有返回,而是直接往下执行被调函数,这种函数称为内联函数

    3、显示内联和隐式内联

        显示内联:在函数的返回值前面加 inline, 则该函数就以内联机制调用

            但并不是所有编译器都支持内联机制,我们现在的g++ gcc都不支持

        隐式内联: 结构、联合、类中的成员函数会自动被当作内联函数处理

    4、内联函数的适用条件

        内联的优点:

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值