C++之inline函数
来源:互联网 发布:linux cern 知乎 编辑:程序博客网 时间:2024/06/04 19:56
1、为什么需要inline
C中的宏没有调用,参数压栈、返回操作所以比函数快,但是有参数副作用,inline为了取代这种表达式形式的宏定义,它消除了宏定义的缺点,同时又很好地继承了宏定义的优点。
2、inline如何使用以及特点
1)、inline一般写在C++函数定义的前面,一般主要是长度不长经常调用的函数,比如
inline void f(){ /** **/}
2)、inline 定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换,(像宏一样展开),没有了调用的开销,效率也很高
3)、类的内联函数也是一个真正的函数,编译器在调用一个内联函数时,会首先检查它的参数的类型,保证调用正确。然后进行一系列的相关检查,就像对待任何一个真正的函数一样。这样就消除了它的隐患和局限性
4)、使用inline函数完全取代表达式形式的宏定义,内联函数一般只会用在函数内容非常简单的时候,这是因为,内联函数的代码会在任何调用它的地方展开,如果函数太复杂,代码膨胀带来的恶果很可能会大于效率的提高带来的益处。内联函数最重要的使用地方是用于类的存取函数。
3、测试Demo
#include <iostream>using namespace std;class Account{public: Account(int value); Account(){} int doubleValue();private: int val;};Account::Account(int value){ val = value;}inline int Account::doubleValue(){ return val * 2;}int main(){ Account account = Account(5); int result = account.doubleValue(); std::cout << "result is " << result <<std::endl; return 0;}
用命令编译
g++ -g test.cpp -o test然后我们再去执行test文件
./test
4、运行结果
1111deMacBook-Pro:inline a1111$ vim test.cpp 1111deMacBook-Pro:inline a1111$ g++ -g test.cpp -o test1111deMacBook-Pro:inline a1111$ ./testresult is 10
阅读全文
0 0
- C/C++之深入分析inline函数
- 【C++】:C++之内联函数(inline)
- 【每日一C之十三】C 语言inline内联函数
- C 函数 inline
- C-inline函数
- [C++]inline函数
- c++-inline 内联函数
- C++inline函数阐述
- c inline函数
- C语言inline函数
- 【C++】内联函数,inline
- C++inline函数简介
- c++inline内联函数
- C语言inline函数
- C++inline函数浅析
- C++之inline函数
- C++---之inline
- C++——inline函数
- ARM的商业模式和ARM各种版本号区分
- 3ds Max导出OBJ的mtl贴图路径不正确
- 根据id分表
- SVN 使用简介及个人总结
- 131. Palindrome Partitioning
- C++之inline函数
- 如何远程操控另一台计算机
- A14_反射
- android inflate源码解析
- 53. Maximum Subarray
- JingS-3
- ACM大数模版
- Python ——优雅的解释型语言
- TCP 滑动窗口协议/1比特滑动窗口协议/后退n协议/选择重传协议