1、引用
引用是已定义变量的别名(另一个名称)
通过将引用变量作为参数,函数将使用原始数据,而不是其拷贝。从而可以修改原始数据。
int &指的是指向int的引用。
引用必须在定义时马上被初始化,如:int &ra = a;
而不能这样:
int a;
int &ra;
ra = a;
2、函数重载
函数的重载是以形参类型和个数来区分的,而不是以形参名和返回值来区分
int add(int x, int y);
int add(int a, int b);
不以形参名来区分
int add(int x, int y);
void add(int x, int y);
不以函数返回类型来区分
3、函数模板
template <class T>
void Swap(T &a, T &b)
{
T temp;
temp = a;
a = b;
b = temp;
}
式中T代表任意数据类型。
具体化模板:template <>void Swap<T>(T &, T &);
优先级:
非模板版本>显式具体化>模板版本
3、数据存储
堆区:由程序员分配和释放,是动态分配的存储空间,如new和malloc
栈区:由编译器自动分配和释放,对刚函数的参数,局部变量,临时变量和数组等
全局数据区:存放全局变量和静态变量
volatile是防止因编译器的优化而改变或省略某些变量。加上volatile则会每次从它最原始的位置读取数据。