内联函数与宏定义

一、宏的优缺点。

      程序调用宏的时候,只是在宏预处理的地方把代码展开,不需要像函数调用那样,必须在调用前保存现场,调用后恢复现场,需要一定的空间和时间。因此宏调用更具效率。

      但是宏也有很多的不尽人意的地方。
        1、宏不能访问对象的私有成员。
        2、宏的定义很容易产生歧义。

 

二、内联函数不仅保留宏的优点,还进一步完善了宏的缺点。

      内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。

      用法:

             1、内联函数必须是和函数体的实现在一起定义。

             2、内联函数如果过大,就失去了意义了,跟一般函数调用效率就一样了,因此一般用于简单的类读写操作。

      例:

           Class CTest{

                     private:

                               int nNum;

                     public:

                               int Add(){ return nNum++;}// 是内联函数,不管有没有加“inline”关键字

                               inline int Sub(){return nNum--;}// 是内联函数

                               inline int GetNum();// 不是内联函数,不管是否加了“inline”关键字

            };

           但是如果在类的实现部分添加“inline”关键字,则该函数就是内联函数:

                               inline CTest::GetNum(){return nNum;}// 是内联函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值