什么是内联函数 inline

内联函数(inlinefunction)

在这里插入图片描述
#千锋物联网逆战班#
要好好努力然后多挣钱,才养得起自己这个爱吃的胃,爱玩儿的心,爱逛爱买的习惯,就算是一个人往一个人来,也能生活得很好。

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、函数体不能过于庞大 不能对函数进行取址操作
内联仅仅只是给编译器一个建议,编译器不一定会接受这种建议,如果你没有将函 数声明为内联函数,那么编译器也可能将此函数做内联编译。一个好的编译器将会 内联小的、简单的函数。

发布了52 篇原创文章 · 获赞 42 · 访问量 4954

猜你喜欢

转载自blog.csdn.net/weixin_43288201/article/details/104955824