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; //试图修改常量对象

原文链接: https://www.cnblogs.com/lxp1988/archive/2012/02/19/2358479.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++小知识(1)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/41999

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午6:47
下一篇 2023年2月8日 下午6:48

相关推荐