C++ 语法实验室之 inline 关键字
来源:互联网 发布:华能和国电投合并知乎 编辑:程序博客网 时间:2024/06/14 12:07
关于inline关键字,可以说是一个简单关键字,先直接总结一下这个关键字要领吧, 再说为什么他是宏的一种很好的补充
1:在类中声明同时定义的成员函数,自动转化为内联函数
也就是说想如下函数d实际上在编译的过程就转化为内联函数。
class A()
{
void c();// not a inline function;
void d(){ print("d() is a inline function.");}
}
2: inline关键字必须和函数体定义放在一起才可以实现内联,仅仅将inline放在函数声明之前不起任何作用。
3:inline指令就象register,它只是对编译器的一种提示,而不是命令。也就是说,只要编译器愿意,它就可以随意地忽略掉你的指令,事实上编译器常常会这么做。
4:内联函数的运行速度比常规函数快一些,但代价是需要占用更多的内存空间,若在程序中多个地方调用同一个内联函数,该程序需要包含有该函数代码的多次拷贝。由于在编译时将函数休中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。
5:内联函数要特别慎用,实际上内联函数应该里面只有极少的简短代码,而且通常不含switch以及类构造析构过程。
内联函数是宏的一种很好的补充
注意:虽然内联函数和宏都是用代码量换执行效率,以直接展开代码方式来代替普通函数,但是内联有以下优点
1.内联函数在运行时可调试,而宏定义不可以;
2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;
3.内联函数可以访问类的成员变量,宏定义则不能;
4.宏在有时会发现无法预料的错误如下:
#define MAX(a,b) ((a)>(b)?(a):(b))
int a=1,b=0;MAX(a++,b); //a被增值2次
- C++ 语法实验室之 inline 关键字
- C++ 语法实验室之extern关键字
- C++ 语法实验室之volatile关键字
- C++ 语法实验室之mutable关键字
- C++ 语法实验室之operator关键字
- C++ 语法实验室之 static 关键字
- C++ 语法实验室之 friend 关键字
- C++ 语法实验室之explicit关键字
- C/C++ inline关键字
- (C++)inline关键字
- C语言关键字Inline
- c语言关键字学习之 static register inline volatile
- Objective-C语法之static关键字
- Objective-C 语法之 static 关键字
- Objective-C 语法之 static 关键字
- C语言的inline关键字
- C语言中的inline关键字
- C语言的inline关键字
- 2017.1.13——寒假集训第二天
- 【JAVA秒会技术之软件应用】Chrome超强测试软件Advanced-REST-client免越狱安装
- mysql配置文件设置注意点
- Asp.Net 请求处理机制
- 最小二乘法的一般形式和矩阵形式原理推导和代码实现
- C++ 语法实验室之 inline 关键字
- c++/java中类和对象的区别
- win7下安装TensorFlow
- 高精度减法pascal程序
- IE中iframe跨域访问
- 如何检测到链表中存在循环?
- 如何在Visual C++ 6.0中添加多行注释图标和多行注释快捷键?
- split()及转义的使用
- 【AJAX】基本认识