内联函数
在函数声明或定义时,将inline关键字加在函数返回类型前面就是内联函数。
#include <iostream>
using namespace std;inline int add(int x, int y) {return x + y;
}
int main(int argc, const char *argv[])
{int a = 10, b = 20;int ret = add(a, b);//翻译为int ret = 10 + 20;只适合简单几行代码时使用cout << ret << endl;return 0;
}
作用:提高代码执行效率;不需要监理函数调用时的运行环境,不需要进行参数传递,不需要跳转。
- 注意:、
- inline关键字只是建议编译器做内联优化,编译器不一定做内联
- 内联函数的声明或定义必须在函数定义之前完成
- 一般几行代码适合作为内联函数,像递归函数包含循环switch goto循环不适合做内联函数。
动态内存管理
new和delete函数
在C语言中,如果需要使用堆内存,程序员可以用函数malloc()从堆中分配指定大小存储区域,用完之后必须用free()将之归还系统。如果用完之后没用free()释放,就会造成内存泄露。
malloc()函数的使用比较麻烦,除了需要计算需求内存的大小之外,还必须堆获得的内存进行类型转换。为此C++提供了new和delete两个运算符。
new的用法
- p = new type
- p = new type(x)
- p = new type[n]
其中p是指针变量,type是数据类型。用法1 只分配内存,用法2 将分配的堆内存初始化为x,用法3分配具有n个元素的数组。分配不成功返回空指针(NULL)
int main(int argc, const char *argv[])
{int *p, *p1, *p2, *p3;p1 = new int;//申请int类型的空间p2 = new int(123);//初始化申请的内存空间为123;p3 = new int[10];//申请123个int类型的内存空间,此为数组p = (int *)malloc(sizeof(int));//C语言的方法申请内存,后面必须free释放内存/*释放内存空间*当delete p3 写法为释放一个int类型的内存p3[0],其余内存空间未释放,造成内存泄露* */free(p);//C语言方法释放内存delete p1;delete p2;delete[]p3;cout << p1 << " " << p2 << " " << p3 << " " << p << endl;return 0;
}