c++学习笔记(八)
内联函数
概念
内联(inline)函数是c++为提高程序运行速度所做得一项改进。
与常规函数的区别不在于编写方式,而在于被调用时的运行机制不同————编译器使用函数代码替换函数调用。
引用内联函数时,就像将内联函数内的代码直接copy到引用位置。
使用建议:如果执行函数代码的时间比处理函数调用机制时间长,则节省的时间将只占整个过程的很小一部分。
如果代码执行时间很短,内联调用就可以节省大部分时间。
但占用的内存也会多一些。
使用内联特性
1.在函数声明前加关键词inline。
2.在函数定义前加关键词inline。
二者选其一即可。
宏定义
宏定义的原理也是替换,和内联相似,但有的用法需要注意。
#include<iostream>
using namespace std;
#define N 3
#define sq(num) num*num
int main()
{
cout<< N <<endl;
cout<< sq(5)<<endl;
cout<< sq(2+3)<<endl;
return 0;
}
这是我打得一段代码,按照我之前的思维,5和2+3应该完全相等。
但在今天的学习后,我涨了新知识。
为什么当num为5时num*num
的结果为5,而当num为2+3时,num*num
结果为11呢。
因为宏定义#define的实质是替换,num为2+3,那就讲num*num
中的num直接变为2+3,即2+3*2+3,得到的结果自然是11.