内联函数 函数的重载
来源:互联网 发布:uuu加速器网络官网 编辑:程序博客网 时间:2024/05/29 05:57
内联函数
内联函数,又称内嵌函数,内置函数。
关键字:inline
C不支持内嵌函数
内联函数就是小型函数,牺牲空间来节省函数调用的开销(节省运行时间,却增加了代码长度),一般用作比较小的函数,即函数内部没有循环、开关语句等。
内联函数被发明出来就是为了取代C中的宏,因为宏是单纯的替换而没有类型检查所以经常出毛病,
比如:#define MAX(a, b) (a) > (b) ? (a) : (b)
如果你在代码中这样写:
int a = 5, b = 10;
int max = MAX(++a, b); // a自增了两次
int max = MAX(++a, b+10); // a自增了一次
a的自增次数竟然由与其比较的数字的大小来决定!?这肯定不是你想要的结果。所以最好的办法是这样:
template <class T>
inline T max(const T& t1, const T& t2)
{
return t1 > t2 ? t1 : t2;
}
这样的话如果你这样写:int max = max(a, b);其实就被替换为了:int max = a > b ? a : b;
虽然看起来宏差不多,但是比宏多了类型检查,而且内联函数使用的是真正的函数的特性,而不是宏的function-like,模拟函数的功用。内联函数是为频繁使用、并且过程不大的小型函数设计的,我说了它是以牺牲代码空间来节省函数调用的开销,内联函数使用不当就会造成代码膨胀,所以使用它一定要小心。建议(书上抄的):For function-like macros, prefer inline functions to #defines.
一般的函数调用在转到被调用函数之前要记下执行时的指令地址,保护现场,执行完成后还要恢复现场。这些都是要花费一些时间的如果有的函数不是很长(一般是5个语句一下)频繁调用就会降低程序执行效率,这时C++中一般使用内联函数。
但并非一旦制定inline,编译系统就必须这样做。假如系统包含循环语句和switch语句的函数或一个递归函数,一个大于1000行的函数,编译器就会忽略inline声明,按普通函数处理。
只有规模小又被频繁使用的简单函数才适合声明inline函数。
函数的重载
- 内联函数 函数的重载
- 函数 默认值、重载、内联
- 一、C++ 内联函数、重载函数、函数的缺省参数
- 内联函数&&函数重载&&函数缺省值
- 内联函数、递归函数和重载函数
- C++函数重载,默参,内联
- 内联成员函数与重载成员函数
- 内联函数,重载函数,默认参数
- 内联成员函数和重载成员函数
- C++:内联函数、重载函数、递归、补码
- C++函数的重载、内联和默认参数
- 【C++】内联inline、继承、重载与虚函数的解释
- 3.8 函数的重载、内联和默认参数
- C++函数的重载、内联和默认参数
- C++函数的重载、内联和默认参数
- inline 内联函数 constexper 函数 函数重载与函数匹配
- 037day(动态内存分配和内联函数,重载函数,函数参数缺省值的学习)
- 复习笔记13 函数 重载 内联
- Reverse a linked list.
- php.ini中error_reporting参数的配置
- VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100.dll, xxx100d.dll等的解决方法
- C#餐厅管理系统5--餐桌和职员
- 5.Struts采用EL保持表单数据:struts-config.xml
- 内联函数 函数的重载
- Linux cgroup机制分析之框架分析
- 使用 C3P0 摘要
- 【贪心】拟阵论 贪心策略的数学基础
- 6.Struts采用EL保持表单数据:web.xml
- 使用海康摄像头实现实时监控
- 静态持续性变量与自动局部变量异同
- VS2005快捷键大全
- 隐藏 / 显示软键盘