const与引用
别名。一初始化,就必须指向某个对象,不能指向引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int ival = 1024; int &refVal = ival; refVal = 1; cout << "ival = " << ival << ", refVal = " << refVal << endl;
const int ci = 1024; const int &r1 = ci;
const int r2 = ival;
int i = 1024; int *p = &i; int *&refVal2 = p; cout << *refVal2 << endl;
|
const与指针
指向常量的指针(pointer to const)
不能用于修改其所指对象的值,常量对象的指针,只能使用指向常量的指针。
1 2 3 4 5 6 7 8 9 10 11
| const double pi = 3.14;
const double *cptr = π
double dval = 3.14; cptr = &dval;
cout << *cptr << endl;
... 3.14
|
const指针
常量指针必须初始化,且初始化完成后,其值不能再改变,也就是说只能一直指向某一个地址。可以通过此指针改变所指向对象的值。
1 2 3 4 5 6 7 8
| int errNumb = 0; int *const curErr = &errNumb; *curErr = 1; const double pi = 3.14159;
const double pi2 = 3.14159; const double *const pip = π
|
从右往左法则
以const double *const pip = &pi
为例,离pip最近的是const,说明pip本身的值不能改变,在往左,pip的类型是一个指针,说明pip是一个常量指针;在往左,说明pip是一个常量指针,它指向的对象是double类型;再往左,说明pip是一个常量指针,它指向的对象是一个double型常量的。