blog:cpp:basic_const

基础语法 - const限定符

把引用绑定到const对象上,称之为对常量的引用,不能通过对常量的引用修改它所绑定的对象。

引用的类型必须与其所引用的对象的类型一致,但是对于const的引用有如下例外。

在初始化常量引用表达式时允许用任意表达式作为初始值,只要该表达式的结果能转换为引用的类型即可。

例:

int i = 42;
const int &r1 = i;    // 将const int& 绑定到一个普通的int对象上
const int &r2 = 42;
const int &r3 = i * 2;

double dval = 3.14;
const int &ri = dval;

cout << r1 << endl;   // r1为42
cout << ri << endl;   // ri为3

i = 100;
dval = 5.3;

cout << r1 << endl;   // r1为100
cout << ri << endl;   // ri为3

ri引用了一个int类型的数,但dval确实double类型,为了让ri绑定一个整数,编译器把上述代码变成了如下形式:

const int temp = dval;
const int &ri = temp;  // ri绑定了一个临时对象, 所以改变dval的值并不会改变ri的值。

不能定义 int &ri = dval;, 因为非常量引用意味着可以改变dval的值,由于类型不同,所以这种行为是非法的。

允许把指针本身定义为常量。常量指针必须初始化,一旦初始化完成,则它的则就不能再改变了。

* 放在const关键字之前用以说明指针是一个常量。(不变的是指针本身的值,而并非指向的那个值)

例:

int errNumb = 0;
int *const curErr = &errNumb;   // curErr 将一直指向errNumb
const double pi = 3.14159;
const double *const pip = &pi;  // pip是一个指向常量对象的常量指针
  • blog/cpp/basic_const.1650207574.txt.gz
  • 最后更改: 2022/04/17 22:59
  • caodan