2. 函数后置返回类型内联函数
Posted 干锅土鸡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2. 函数后置返回类型内联函数相关的知识,希望对你有一定的参考价值。
函数后置返回类型
//前置返回类型
void func1(int a,int b)
//后置返回类型 C++11
auto func2(int a,int b)->void
内联函数
//函数定义前加上inline 就成了内联函数
inline int myfunc()
return 1;
/*
1.
频繁地调用简单地函数,需要频繁地分配内存、压栈、出栈等,不划算
inline影响编译器,在编译阶段对这种函数进行处理,系统尝试将调用该函数地动作
替换为函数本体(如上:return 1;)
*/
int abc = myfunc(5);//替换为:int abc = 1;
/*
显然能提升性能,节省了函数栈帧地开辟、压栈、出栈。
2.
inline只是开发者地一个建议,编译器可以尝试去做,也可以不做
取决于编译器,不同编译器可能结果不用,内联成功与否取决于编译器
3.
内联函数地定义需要放在头文件中
优缺点:
内联函数函数体应该尽量小
循环、分支、递归应该避免出现在inline函数中,否则可能内联失败
constexpr函数,可以堪称更严格地一种内联函数
*/
函数杂合用法总结
- 函数返回指针
int* myfunc()
int tmp = 9;
return &tmp;
//函数结束后,tmp地址就被系统回收了
void main()
int *p = myfunc();
*p = 6;//巨大隐患,往一个不属于你的地址写了数字。(此地址被回收了)
//当时可能可以运行,过一会就会崩溃
- 函数返回引用
int& myfunc()
int tmp = 9;
cout << &tmp << endl;
return tmp;
void main()
int& k = myfunc();
cout << &k << endl;
k = 10;//又是个巨大隐患
地址一致:
若int k = mufunc();打印k地地址就不一样了,k = 10;安全,因为此地址有效
以上是关于2. 函数后置返回类型内联函数的主要内容,如果未能解决你的问题,请参考以下文章
KotlinKotlin 函数总结 ( 具名函数 | 匿名函数 | Lambda 表达式 | 闭包 | 内联函数 | 函数引用 )