一.引用
引用是一种复合类型,引用分为左值引用和右值引用,其中右值引用时C++11提出来的,
常说的引用其意为左值引用。注意:引用不是对象,它是一个对象(变量)的别名,不能改变引用的对象,故必须在初始化的确定引用的对象。
(1)引用(左值引用)
引用的类型必须和被引用变量的类型一致,但有两种例外情况。
①const引用
double dval = 3.14;
Const int &r1 = dval;
其内部转化为:
Const int temp = dval;
Const int &r1 = temp;
temp是一个临时量,即是一个未命名的对象。所以如果r1不是常量引用,那么即是允许通过引用改变常量了,故C++语言将它归为非法,编译报错。
②C++Primer p534 // 看到再完善
(2)右值引用 // 看到再完善
C++Primer p471
二. 指针
关于const与constexpr见下一篇文章详细介绍。
(1)指针和const
如:
Const int * const p; // 这里的P是一个常量指针(右边const确定),指向整形常量(左边const确定)。
(2)指针和constexpr
如:
Constexpr int *p1; // 这里的p1是一个指向整形常量指针。
Constexpr const int *p2; //这里的p2是指向整形常量的常量指针。
(3)指针和类型别名
如:
typedef char *pstring;
Const pstring ctrs = 0;//cstr是指向char的常量指针
Const char * str = 0; // str是指向const char的指针
Const pstring *ps; // ps是一个指针,它的对象是指向char的常量指针