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函数,可以堪称更严格地一种内联函数
*/

函数杂合用法总结

  1. 函数返回指针
int* myfunc()

	int tmp = 9;
	return &tmp;
	//函数结束后,tmp地址就被系统回收了

void main()

	int *p = myfunc();
	*p = 6;//巨大隐患,往一个不属于你的地址写了数字。(此地址被回收了)
	//当时可能可以运行,过一会就会崩溃

  1. 函数返回引用
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. 函数后置返回类型内联函数的主要内容,如果未能解决你的问题,请参考以下文章

2. 函数后置返回类型内联函数

函数新特性内联函数const详解

inline函数

OpenCL 内联函数可以返回 OpenCL 类型吗?

Kotlin高阶函数内联函数以及集合变换序列

KotlinKotlin 函数总结 ( 具名函数 | 匿名函数 | Lambda 表达式 | 闭包 | 内联函数 | 函数引用 )