1.定义const对象
const int i=10;
变量i仍然是一个左值,但是现在这个左值是不可修改的,任何修改i的尝试都会导致编译出错。
2.const对象默认为文件的局部变量
非const变量默认为extern。要使const变量能够在其他的文件中访问,必须显示的指定它为extern。
3.引用
引用就是对象的另一个名字。在实际程序中,引用主要用作函数的形式参数。
引用是一种复合类型,通过在变量前添加“&”符号来定义。复合类型是指用其他类型定义的类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。
(1).引用是别名
引用只是绑定的对象的名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。
int ival = 10;
int &refVal = ival;
refVal += 2; //将refVal指向的对象ival加2
int ival2 = refVal; //类似的,把ival相关联的值赋给ival2
std::cout<<refVal<<std::endl //12
<<ival<<std::endl //12
<<ival2<<std::endl; //12
引用必须要初始化。
(2).const引用(指向const对象的引用)
const引用是指向const对象的引用,const引用时只读的。
非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
double dval = 3.13;
int &ri = dval; //错误,非const引用只能绑定到与该引用同类型的对象
const int &rii = dval; //正确,const引用则可以绑定到不同但相关的类型的对象或绑定到右值
4.typedef名字
typedef通常被用于以下三种目的:
(1)为了隐藏特定类型的实现,强调使用类型的目的。
(2)简化复杂的类型定义,使其更容易理解。
(3)允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。