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

什么是内联函数 inline

程序员文章站 2022-04-11 12:57:41
...

内联函数(inlinefunction)

什么是内联函数 inline
#千锋物联网逆战班#
要好好努力然后多挣钱,才养得起自己这个爱吃的胃,爱玩儿的心,爱逛爱买的习惯,就算是一个人往一个人来,也能生活得很好。

c++从c中继承的一个重要特征就是效率。假如c++的效率明显低于c的效率,那 么就会有很大的一批程序员不去使用c++了。 在c中我们经常把一些短并且执行 频繁的计算写成宏,而不是函数,这样做的理由是为了执行效率,宏可以避免函数 调用的开销,这些都由预处理来完成。 但是在c++出现之后,使用预处理宏会出 现两个问题: 第一个在c中也会出现,宏看起来像一个函数调用,但是会有隐藏 一些难以发现的错误。 第二个问题是c++特有的,预处理器不允许访问类的成 员,也就是说预处理器宏不能用作类类的成员函数。 为了保持预处理宏的效率又增加安全性,而且还能像一般成员函数那样可以在类里 访问自如,c++引入了内联函数(inlinefunction). 内联函数为了继承宏函数的效率,没有函数调用时开销,然后又可以像普通函数那 样,可以进行参数,返回值类型的安全检查,又可以作为成员函数。

宏函数(带参数的宏)的缺点:

第一个在c中也会出现,宏看起来像一个函数调用,但是会有隐藏一些难以发现的错误。
第二个问题是c++特有的,预处理器不允许访问类的成员,也就是说预处理器宏不能用作类的成员函数
内联函数:内联函数为了继承宏函数的效率,没有函数调用时开销,然后又可以像普通函数那样,可以进行参数,返回值类型的安全检查,又可以作为成员函数
内联函数:是一个真正的函数。函数的替换 发生在编译阶段

inline int my_mul(int x,int y)
{
    return x*y;
}
void test01()
{
    cout<<"my_mul = "<<my_mul(10+10,20+20)<<endl;
}

任何在类内部定义的函数自动成为内联函数。

class Person
{ 
public: 
	Person()
	{ 
		cout << "构造函数!" << endl; 
	} 
	void PrintPerson()
	{ 
		cout << "输出 Person!" << endl; 
	} 

内联函数条件:

1、不能存在任何形式的循环语句
2、不能存在过多的条件判断语句
3、函数体不能过于庞大 不能对函数进行取址操作
内联仅仅只是给编译器一个建议,编译器不一定会接受这种建议,如果你没有将函 数声明为内联函数,那么编译器也可能将此函数做内联编译。一个好的编译器将会 内联小的、简单的函数。

相关标签: 笔记