C++:函数

1.函数默认值参数

  • 在函数声明或者定义的时候,给定默认参数,如果实参传递时候,不给形参传值,则会按照默认值传值
  • 函数参数的默认值是在编译期生成指令时候直接生成入参指令
  • 函数参数的默认值只能传递常量,默认值参数只能从右向左依次赋值,不能跳过
  • 函数的默认值参数在同一作用域只能赋值一次,不能重复赋值
  • 因为函数参数的默认值是在编译期带入的,所以函数的默认值只在本文件生效

2. Inline(内联函数)

  • 内联函数:(Release版本)在调用内联函数时候,该函数会在调用点将代码展开(编译时期),内联函数在函数调用时侯没有栈帧的开辟等等,在Debug版本下调用和正常函数调用相同
  • 由于内联函数在编译期展开,编译期无法获取变量的值,而递归函数的终止条件一定需要有变量参与,所以递归函数不可能被处理成内联函数
  • inline只是对系统的建议,建议将该函数处理为内联

3. 符号

数据&指令

  • 所有的数据都会生成符号,指令中只有函数名会生成符号
  • 符号:全局符号(global)- 所有文件可见
    局部符号(local)- 只有本文件可见
  • Inline函数在debug版本生成的是local符号,如果处理为内联之后在Release版本不生成符号,直接在调用点展开

3. 宏函数&static函数&内联函数&普通函数

  • 宏函数:预编译时期在调用点展开,无法调试,没有类型安全校验,没有栈帧开辟,单文件可见,不生成符号
  • static函数:不展开,可以调试,有类型安全校验,有栈帧开辟,单文件可见,生成符号
  • 内联函数:debug版本不展开,release版本在调用点展开,可以调试,有类型安全校验,debug版本有类型安全校验,release版本没有栈帧开辟,单文件可见,debug版本生成符号,release版本不生成符号
  • 普通函数:不展开,可以调试,有类型安全校验,有栈帧开辟,多文件可见,生成global符号

4. 函数重载

  • 概念:函数名相同,参数列表不同
  • C语言生成函数符号依赖函数名,C++产生函数符号依赖函数名和参数列表(返回值不受影响)
  • 函数重载在编译时期决定调用哪个函数——静多态的一种
    C语言和C++的相互调用
    Extern:使用c语言方式编译代码
    请添加图片描述
    类型转换优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值