C++中的函数回顾、后置返回类型和内联函数

摘要:本文回顾了C++中的函数概念,并介绍了后置返回类型和内联函数的使用。后置返回类型是C++11引入的一种写法,将返回类型放在参数列表之后,可以使用auto和箭头符号来表示。内联函数通过在函数定义前加上关键字inline来定义,适用于函数体很小且调用频繁的情况,可以提升性能。

正文:


一、函数回顾与后置返回类型:


在C++中,函数定义中如果形参在函数体内用不到,可以省略形参名字只给出类型。例如:

void func(int, int); // 函数声明
void func(int x, int y) // 函数定义
{
    // 函数体
}


在使用时,必须写全实参,如:

func(12, 13);


另外,函数声明时也可以只有形参类型没有函数名,例如:

void(int, int); // 函数声明


C++11引入了后置返回类型的写法,即将返回类型放在参数列表之后。可以使用auto和箭头符号来表示。    C++11中引入   后置返回类型,就是在函数声明和定义中,把返回类型写在参数列表之后。
       前面放auto,表示函数返回类型放到参数列表之后,而放在参数列表之后的返回类型是通过   ->  开始的

例如:

auto func(int a, int b) -> void;//函数声明
auto func(int a, int b)->void//函数定义
{
	return;
}

二、内联函数:


内联函数是通过在函数定义前加上关键字inline来定义的。内联函数适用于函数体很小调用频繁的情况,可以提升性能

      (1)inline影响编译器,在编译阶段对inline这种函数进行处理,系统尝试将调用该函数的动作替代为函数本体。
      通过这种方式,来提升性能。
    例如:

inline int func(int a)//函数定义之前加  inline  ,这个普通函数就变成了内联函数
{
	return 1;
}
int abc = func(5);//int abc = 1


      (2)inline只是我们  开发者  对   编译器  的一个建议,编译器可以尝试去做,也可以不去做,这取决于编译器的诊断功能,也就是说  决定权在编译器手中,可以去做可以不去做,我们控制不了编译器
      (3)内联函数的定义 就要放在头文件中。这样需要用到 内联函数的.cpp文件都能够通过include把内联函数的源代码#include进来,以便找到这个函数的本体源代码并尝试将该函数的调用替代为函数体内的语句。
    
    优缺点:
    代码膨胀问题;所有建议内联函数体尽量小。
    

    注意:各种编译器对inline的处理各不相同,inline函数尽量简单,代码尽可能少。循环 分支 递归调用 尽量不要出现在inline函数中否则的话,编译器很可能会因为你写这些代码的原因拒绝让这个函数成为一个inline函数
    constexpr函数,可以看成更为严格的内联函数
    #define 宏展开 也类似于 inline.


三、总结:


内联函数的定义应放在头文件中,以便所有需要使用该内联函数的.cpp文件都能够包含该头文件

内联函数作用是在编译阶段调用该函数的动作进行替代为函数体,以提升性能。然而,内联函数的定义只是我们对编译器的一个建议,编译器可以选择是否将函数调用替代为函数体,这取决于编译器的诊断功能。

内联函数的优点是可以减少函数调用的开销,但也有缺点。代码膨胀是内联函数的一个问题,因此建议内联函数的函数体尽量小。另外,循环、分支和递归调用等复杂操作不宜出现在内联函数中,否则编译器可能会拒绝将该函数定义为内联函数。


本文回顾了C++中的函数概念,并介绍了后置返回类型和内联函数的使用。后置返回类型是C++11引入的一种写法,将返回类型放在参数列表之后,可以使用auto和箭头符号来表示。内联函数通过在函数定义前加上关键字inline来定义,适用于函数体很小且调用频繁的情况,可以提升性能。然而,内联函数的定义只是对编译器的建议,编译器可以选择是否将函数调用替代为函数体。内联函数的优点是减少函数调用的开销,但也存在代码膨胀的问题,因此建议内联函数的函数体尽量小。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值