1.概要
把const分别放在不同的位置表示的意义有啥不同。
1.const A * c = &a;
2.A const * c = &a;
3.A * const c = &a;
结论,1、2的情况修饰的都是类型。即c这个指针指向的对象是常量。
3的情况修饰的是指针,即c这个指针本身是常量,不能修改。但c指向的对象不是常量,是可以改变的。
2.代码
#include <iostream>
class A
{
public:
int a;
};
int main()
{
A a1;
A a;
A* b = &a;
b->a = 5;
const A* c = &a;
//c->a = 6;
c = &a1;
A* const d = &a;
d->a = 5;
//d = &a1;//不可:证明const修饰的是指针。
A const * e = &a;
//e->a = 6; //不可:证明const修饰的是指针指向的对象
e = &a1;
std::cout << "Hello World!\n";
}
3.补充
const 限制的范围,如果这个对象被const了那么这个对象的全部变量是否都被const了?对,所以为了说明上面的问题,用下面一个更单纯的例子,更能体现const 修饰对象,还是修正对象本身的差别
int main()
{
int a;
int* p_a = &a;
*p_a = 5;
const int* p_a = &a;
//*p_a = 5;
p_a = &a;
int const* p_b = &a;
//*p_b = 5;//不可:证明const修饰的是指针指向的对象
p_b = &a;
int * const p_c = &a;
*p_c = 5;
//p_c = &a;//不可:证明const修饰的是指针。
}
标签:const,int,a1,对象,修饰,指针
From: https://blog.csdn.net/xie__jin__cheng/article/details/139265776