欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【C++】内联函数概念&使用时机&优缺点

程序员文章站 2024-03-21 13:18:46
...

1、typedef关键字

为什么要有typedef这种关键字?主要是解决什么问题?
1)typedef是一种简化复杂名称类型的手段
2)定义一种类型的别名
3)用来定义与平台无关的类型?
typedef long double myreal;
(myreal就是long double的别名)
4)在C语言中,声明struct新对象时,必须要带上struct

2、内联函数

为什么要提出内联函数?主要解决什么问题?
1)inline是C++中的关键字,可以用来定义内联函数
2)内联函数是C++中的一种特殊的函数
内联函数的特殊体现在:编译器在调用内联函数的时候,不是跟普通函数一样,而是在编译的时候,直接将函数体替换到函数调用的位置。
伪代码:

inline void foo(){
	int a;
	int b;
	int c = a + b;
	cout<<c<<endl;
}
int main(){
	//调用函数
	foo();
}
//实际在编译的时候,编译器会处理为:
int main(){
	//用函数体去替换函数调用的代码
	inline void foo(){
	int a;
	int b;
	int c = a + b;
	cout<<c<<endl;
	}
}

1)为什么要引入内联函数

  • 提高运行效率,减少函数带来的开销:普通函数被调用的时候,编译器会把函数信息放在堆栈中,然后存储函数变量,返回地址等信息,当函数调用完毕后,还需要释放堆栈空间。所以普通函数如果被调用的地方很多,会导致大量的内存开销。因此,引入内联函数,减少这种开销。

2)内联函数使用时机

  • 一般来说,inline用于定义类的成员变量
  • 内联函数适用于函数方法体小,多地方调用的函数

3)内联函数的优点

  • 没有调用开销,效率高
  • 编译器在调用一个内联函数的时候,首先会检查它的类型,然后保证调用正确,然后进行一系列相关检查,就像对待任何一个真正的函数一样,这也消除了隐患和局限。但是要注意,宏展开的时候是不会进行校验和检查的,安全隐患较大。
  • 可以作为一个类成员函数,和其他普通类成员函数作用一样。

4)内联函数的缺点

  • 内联函数体一般不宜过大,如果过大的话,编译器会放弃内联的方式,适得其反(程序体过大的话,缓存收到影响)
  • 内存、缓存和CPU优化
  • 对于小巧的、高频率使用的函数适合用inline函数,当代编译会自动使用内联函数
相关标签: C++基础知识

上一篇: 内联函数优缺点

下一篇: