内联函数

---恢复内容开始---

1、C的效率

在C中,保持效率的一个方法是使用宏(macro)。宏的实现是用预处理器而不是编译器。预处理器直接用宏代码代替宏调用,所以就没有参数压栈、生成汇编语言的CALL、返回参数、执行汇编语言的RETURN等的开销。

2、C ++中宏存在的问题

2.1 不是函数调用,隐藏了难以发现的错误。优先级等等问题

#define FLOOR(x,b) x>=b?0:1

if(FLOOR(a&0x0F,0x07))  //……

if(a&0x0F>=0x07?0:1)

#define FLOOR(x,b) ((x)>=(b)?0:1)

2.2 预处理器不允许访问类的成员数据。这就意味着预处理器宏不能用作类的成员函数。C++引入内联函数。

3、内联函数

内联函数在适当的地方像宏一样展开。所以不需要函数的开销。

3.1、类内部的内联函数

通常必须在函数定义前面放一个inline关键字,但这在类内部定义内联函数时并不是必须的。任何在类内部定义的函数自动地成为内联函数。

#include<iostream>
#include<string>
using namespace std;

class Point{
int i, j, k;
public:
Point():i(0),j(0),k(0){}

Point(int ii, int jj, int kk): i(ii), j(jj), k(kk)
{
}

void print(const string& msg = "") const {
if(msg.size() != 0) cout<<msg<<endl;
cout<<"i = "<<i<<", "<<"j = "<<j<<", "<<"k = "<<k<<endl;
}
};

int main()
{
Point p,q(1,2,3);
p.print("value of p ");
q.print("value of q ");

}

两个构造函数和print 函数都默认为内联函数。

---恢复内容结束---
原文链接: https://www.cnblogs.com/wiessharling/archive/2013/03/27/2985282.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/82288

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午8:31
下一篇 2023年2月9日 下午8:31

相关推荐