>[info]# 内置函数
## **内联函数的需要性**
函数调用与返回时,都需要一定的时间和空间的开销;而通过关键字**inline**将一个函数声明成内联函数后,编译器会将该函数的调用处理成编译前的代码替换,而不是象普通函数在编译时的控制转移,从而提高了效率.
## **内联函数的特点**
- 内联函数的代码必须在替换之前已经生成,所以内联函数必须在被调用之前声明或定义.
- 内联函数中,不能含有复杂的结构控制语句,如switch,while.
- 内联函数不能是递归函数.
- 内联函数只适合于只有1~5行的小函数.
## **内联函数与宏定义**
**宏定义**
```
#define MAX(a,b) ((a)>(b)?(a):(b))
```
- 书写格式有过分的讲究,MAX与括号之间不能有空格,所有的参数都要加括号.
- 求值时会有副作用.
- 不作参数的类型检查.
**内联函数**可以有效解决上述问题,替代宏定义.
```
inline int MAX(int a,int b)
{
return a>b?a:b;
}
```
## **例子**
```
#include <iostream>
using namespace std;
inline int max(int,int, int); //声明函数,注意左端有inline
int main( )
{
int i=10,j=20,k=30,m;
m=max(i,j,k); //编译前被替换成:if (j>i) i=j;if(k>i) i=k;m=i;
cout<<”max=”<<m<<endl;
return 0;
}
inline int max(int a,int b,int c) //定义max为内置函数
{
if(b>a) a=b; //求a,b,c中的最大者
if(c>a) a=c;
return a;
}
```
- 介绍
- 编程设计语言
- 第一章 对C++的初步认识
- 1.2 最简单的C++程序
- 1.3 C++对C的补充
- 1.3.1 return
- 1.3.2 输入输出流
- 1.3.3 putchar 和 getchar
- 1.3.4 用const定义常变量
- 1.3.5 函数原型声明
- 1.3.6 内置函数
- 1.3.7 函数重载
- 1.3.8 函数模板
- 1.3.9 有默认值的参数
- 1.3.10 作用域
- 1.3.11 const修饰指针
- 1.3.12 引用
- 1.3.13 生命期
- 1.3.14 变量
- 1.3.15 字符串变量
- 第二章 类与对象
- 2.2 类的声明和对象的定义
- 2.3 类的成员函数
- 第三章 关于类和对象的进一步讨论
- 3.1 构造函数
- 3.1.1 对象的初始化
- 3.1.2 构造函数
- 3.2 析构函数
- 3.3调用析构函数和构造函数的顺序
- 3.4 对象数组
- 3.5 对象指针
- 3.6 共享数据的保护
- 3.7 对象的建立与释放
- 3.8 对象的赋值与复制
- 3.9 静态成员
- 3.10 友元
- 3.11 类模板
- 第四章 运算符重载
- 数据类型转换
- 运算符重载
- 重载流插入运算符和流提取运算符
- 第五章 继承与派生
- 继承与派生
- 第六章 多态性与虚函数
- 多态性
- 虚函数
- 纯虚函数与抽象类