inline学习笔记

1.inline作为内联函数的关键字,和我们所知的宏很相似,在使用时编译器将其展开,做了代码拷贝;

2.inline是作为定义而存在的关键字,只作为申明是没有意义的,关联1所描述的,没有定义,如何展开呢?

3.inline函数定义必须是针对编译器可见的,在使用的地方必须明确知道在什么地方,如下:

a.h

class a

{

    public:

        inline int max(int a, int b);

}

a.cpp

inline int a::max(int a, int b)

{

      return a>b ? a:b;

}

main.cpp

#include "a.h"

int main()

{

   a tmp;

   tmp.max(1,2);

}

会提示undefined reference,将inline函数定义放在.h文件中,如下

a.h

class a

{

    public:

        inline int a::max(int a, int b)

        {

             return a>b ? a:b;

        }

};

ok,编译成功,建议把定义放在.h头文件中

4.相比宏,inline函数有类型检查的优势,另外也能防止宏边界错误问题(如#define max(a, b) a>b , 使用时 max(x++, y));

5.不可滥用inline,虽然inline函数相比普通函数,减少了调用开销,但增加了代码量,所以inline函数过大那就得不偿失了,通常建议在10行以内。


更为详细的介绍:http://www.jb51.net/article/46261.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值