C++必知必会之(7)常量指针与指向常量的指针
来源:互联网 发布:课观教育 知乎 编辑:程序博客网 时间:2024/05/02 10:18
1、T *pt = new T; //一个指向T的指针
const T *pct = pt; //一个指向const T的指针
T *const cpt = pt; //一个const指针,指向T
在pct的声明中,指针不是const的,但它所指向的对象被认为是const的。换句话说,const修饰符修饰的是基础类型T而不是指针修饰符*。而对于cpt的声明来说,声明的是一个指向一个非常量对象的常量指针,即const修饰符修饰的是指针修饰符*而不是基础类型T。
2、const T *p1;
T const *p2; //两者是一样的,都是一个指向常量T的指针。(倒过来读指向常量T的指针)
T const *p3; //一个指向常量的指针
T *const p4 = pt; //一个常量指针,指向非常量T
3、当然,可以声明一个指向常量的常量指针:
const T *const cpct1 = pt; //二者均为常量
T const * const cpct2 = cpct1; //同上
4、注意,使用一个引用通常比使用一个常量指针简单:
const T &rct = *pt; //而不是const T *const
T &rt = *pt; //而不是T *const
5、实际上,指向常量的指针(或引用)去指向非常量的对象,是很常见的:
void aFunc( const T *arg1, const T &argv2 );
//....
T *a = new T;
T b;
aFunc(a, b);
我们并没有宣传a要指向一个常量对象,或者b是一个常量引用。只是声明在aFunc函数中将它们视为常量,而不管它们实际上是否如此。
6、但是,相反的转换,即从指向常量的指针转换为指向非常量的指针,是非法的。
const T acT;
pct = &acT;
pt = pct; //报错
*pt = aT; //试图修改常量对象
C++标准告诉我们,这样的赋值会产生未定义的结果。
- 指向常量的指针 与 常量指针
- 指针与常量,指向常量的指针
- 指向常量的指针与指针常量
- 常量指针与指向常量的指针
- 常量指针与指向常量的指针
- 常量指针 与 指向常量的指针
- 指针常量与指向常量的指针
- 常量指针与指向常量的指针
- 常量指针与指向常量的指针
- 常量指针与指向常量的指针
- 指向常量的指针与指针常量
- 指向常量的指针与指针常量
- C++必知必会之(7)常量指针与指向常量的指针
- 指向常量的指针常量
- 常量指针、指针常量、指向常量的常量指针
- 指针常量,常量指针。指向常量的常量指针
- 指针常量,常量指针, 指向常量的常量指针
- 指针常量,常量指针。指向常量的常量指针 收藏
- 十种更好的表达“你的代码写的很烂”的方法
- iOS系统如何实现网络数据抓包
- 行转列的变种
- 套接字编程(VC_Win32)
- shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法
- C++必知必会之(7)常量指针与指向常量的指针
- 每天一个linux命令:cd(change directory)
- 怎么写平台相关代码整理
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作
- Spring+Hibernate多线程访问数据库
- ie6框架下,出现横向滚动条bug
- android studio无法更新解决方案【附终极解决方法】
- hdu4781Assignment For Princess(2013 成都)构造题
- “黑马程序员”布局管理器