C++小知识(1)

常量指针与指向常量的指针

T *pt = new T;   //指向T的指针
const T *pct = pt; //一个指向const T的指针
T *const cpt = pt; //一个const指针,指向T


//声明中的修饰符(即*前出现的的任何东西)的顺序不影响是什么样的指针。
const T *p1; //指向常量的指针
T const *p2; //也是指向常量的指针

//而一个指向常量指针可以指向非常量T,也可以指向常量
T const *p3; //一个指向常量的指针
T *const p4=pt; //一个常量指针指向非常量

const T *const cpct1=pt;// 指向常量的常量指针
T const *const cpct2=cpct1;//同上

//也可以用引用的形式表达
const T &rct = *pt;
T &rt = *pt;

指向非常量的指针可以转换为一个指向常量的指针,即把非常量指针赋给常量指针

T *pt=new T;
const *pct = pt;

但是不能把指向常量的指针转换为指向非常量的指针,因为肯能引起原常量指针指向的内容的修改,从而导致危险。

const T act;
pct = &act;
pt=pct;//报错
×pt = aT;//试图修改常量对象!


//虽然我们可以用const_cast显示的执行类型转换,但修改常量对象仍会报错
pt=const_cast<T *>(pct);//没有错,但是不妥
*pt = aT; //试图修改常量对象






posted @ 2012-02-19 19:39  FollylloF  阅读(174)  评论(0编辑  收藏  举报