C++中引用类型与指针类型的区别
1.指针是一个对象,引用则不是一个对象,引用只是一个对象的别名。
2.指针可以初始化,也可以不初始化,赋值之后可以重新赋值;引用再定义的时候必须初始化,一旦初始化绑定某一对象之后不能重新绑定到其他对象。
3.赋值和初始化是,无论指针还是引用,等号两边类型必须一致。但是存在特殊情况:
1> 在初始化常量引用(const 修饰)时,允许用、任意表达式作为初始值,只要该表达式能转换成引用的类型即可。
例如:
const int &i = 1;
const double &j = 1.1;
int x = 2;
const int &p = 2*2+x;
-----------------------------
double dval = 3.14;
const int &dval = dval;
等价于
double dval = 3.14;
const int temp = dval;
const int &ri = temp;
这种情况下ri绑定了一个临时量对象,所谓临时量对象就是编译器需要一个空间来存放表达式的求值结果时临时创建的一个未命名的对象。
2>允许一个指向常量的指针指向非常量对象:
double dval = 3.14;
const double *p = &dval;