c++类型const* p和类型const* const p
C++ Type const* p and Type const* const p
我有这个Type const* p
方法。p的点*p
一定不会被修改吗?
Type const* p
是指向Type
类型的const对象的指针。从左到右读取,指针指向星号前面所有内容定义的类型。同理,Type const* const q
是指向Type
类型的const对象的const指针。
同样,*p
也不能通过p修改。p
被定义为const-point to *p
,并承诺不修改它。但是,p的指针*p
可以被指向它的任何其他指针修改。
例如:
Type t;
Type const* pc = &t;
Type *pnc = &t;
pc
承诺不更改t, pnc
不更改。假设类Type有一个const inspect() const
方法和一个非const mutate()
方法。然后是
pc->inspect();
pnc->inspect();
pnc->mutate();
而这个会引发编译器错误:
pc->mutate();
Type const* const q
是一个指向const对象的指针,*q
不能像p一样通过q来修改。而且,指针q
不能被修改:它不能被第二次赋值。
另外,尽管这听起来可能很奇怪,您可以在代码中更改指针Type const* p
指向的类型为Type
的对象——但不能通过p
。
是的,它不能被修改,但是它只保证指针指向的变量是常量它和Type const* const q
不一样,CC_22也保证指针是常量
相关文章:
- 在函数中使用运算符重载,在 c++ 中使用 const 类型输入参数
- 成员函数的"this"参数具有"const"类型,但我的函数实际上不是"const"
- 将 const 类型引用对象注册为类成员对象C++
- 为什么不能在模板函数中向局部变量添加低级 const 类型
- 对于 const 类型,没有可行的重载运算符 []
- 为什么在auto和template函数的情况下,类型都没有推导为"const"类型
- 如何在OOP C 中使用const类型类
- 特征矩阵const类型
- 如何在静态方法中返回const类型
- const类型容器的const_iterator类型
- C++:当返回类成员变量的地址时,编译器强制其为const *类型
- 类型绑定引用中的限定符和 const 类型的初始值设定项中删除
- 在 main 中初始化类的 "static const" 类型变量成员的更好方法
- 正在检查是否有const类型
- 为什么我们能够在类定义中定义[static const int],而不能定义其他静态const类型
- 了解一些涉及 const 类型的C++代码
- c++ 11中的const类型转换为const别名
- 为什么将const类型的智能指针强制转换为类型的智能指针有效?
- STL:为"const T &"类型调用带有ptr_fun的 bind2nd
- 我应该什么时候传递"T* const&"类型的指针?