C++常类型(const 2)(三)

2014-11-24 08:50:44 · 作者: · 浏览: 7

constint &ir = 1024;
奇怪吗?这个语句是正确的!原因是这样的,1024是一个不可寻址的值,对于这样的值要实现引用,编译器必需生成一个临时对象,用引用来指向这个临时对象才行。

int temp = 1024; // 给这个临时对象起个名字tempconstint &ir = temp; // 引用指向的是它
那为什么一定要在int &ir前加一个const呢?假设int &ir正确,这时如果给ir赋个新值就会改变temp的值,是不是很糟糕! 所以要加上const,编译器才会认为是正确的。
---------------------------------------------------------------------
有了上面两小节的准备,让我们来做这么一个题目:
constint p = 1024;
要求用const对象p的地址来初始化一个引用?
这道题有两个解法,先说第一种,分两步做:
constint *pi = &p; // pi本身是非常量指针,指向一个const对象pconstint *&pp = pi; // 引用指向的是非常量指针pi
在这里,pp指向的指针pi是非常量指针,可以重新赋值,但不可以修改p的值。
再看第二种:
constint *const &pi2 = &p;