如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。对常量的引用可以用其它任何引用来初始化;但不能改变。
关于引用的初始化有两点值得注意:
(1)当初始化值是一个左值(可以取得地址)时,没有任何问题;
(2)当初始化值不是一个左值时,则只能对一个const T&(常量引用)赋值。而且这个赋值是有一个过程的:
首先将值隐式转换到类型T,然后将这个转换结果存放在一个临时对象里,最后用这个临时对象来初始化这个引用变量。
例子:
double& dr = 1; // 错误:需要左值
const double& cdr = 1; // ok
第二句实际的过程如下:
double temp = double(1);
const double& cdr = temp;
const int a;这就是一个常量,他能赋给任何其他与他一样的类型的变量,如int b,int c或者long d,前面都是没有const的哦!!就是说可以是这样子的 b = a;c = a;d = a;把a的值赋给没有带const的类型都可以!!但是如果你要把其他类型的赋给a那都是不行的!!例如 a = b;a = c;a = d;都是不行的!!因为const的原因!!const的用意是把这个值死死的锁死了!!不能改变的!!懂吧!!这都是解释不能改变的!!
”对常量的引用可以用其它任何引用来初始化“:这却是说const int a = 4;如果你只是刚开始的建立变量,那么你给他初始化是没问题的!!但是之后你却不能改变它的值,如果你硬生生的改变它的值,程序就会出错!!
对哦!!我刚才上面第一行说的赋给其他与他一样类型的变量,其实也不止只是一样的类型才能赋值,可以用其他函数去强制改变其类型,这个我就不详细回答了!!以后你自然会遇到了!!
1、全局变量只有一种定义方法,就是定义在函数外面
全局变量太长而言可以用变量也可以用宏
2、例如:
const double pi=3.14;
#define PI 3.14
不能赋值