const可以把有关的数据定义为常量。

const类型可以修饰:对象,指针,引用

使用const_cast为强制类型转换,将常量强制转换非常量。

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a = 10;
 6     const int* p = &a; //定义 int类型的常量指针 p ,并指向 a 的地址,*p不能被修改
 7     const int ca = 30; //定义一个常量 ca 并赋值为30
 8     int* q;//定义int类型的空指针 q 
 9     cout << "a的地址为:\t" << &a << "\t a的值为:\t" << a << endl;
10     cout << "*p的指向地址为:" << p << "\t *p的值为:\t" << *p << endl;
11     q = const_cast<int*>(p);//通过 const_cast 将修饰指针 p 的const 类型去掉,从常量指针强转为非常量指针,且仍然指向原来的对象a
12     *q = 20;//将20赋值给指针q
13     cout << "a的地址为:\t" << &a << "\t a的值为:\t" << a << endl;
14     cout << "*p指向的地址为:" << p << "\t *p的值为:\t" << *p << endl;
15     cout << "*q指向的地址为:" << q << "\t q的值为:\t" << *q << endl;
16     cout << "分界线" << endl;
17     p = &ca;//定义指针 p 取 ca 地址
18     q = const_cast<int*>(p);
19     *q = 40;//将40赋值给指针q
20     cout << "ca的地址为:\t" << &ca << "\t ca的值为:\t" << ca << endl;
21     cout << "*p指向的地址为:" << p << "\t p的值为:\t" << *p << endl;
22     cout << "*q指向的地址为:" << q << "\t p的值为:\t" << *q << endl;
23     return 0;
24 }

 

posted on 2022-01-12 16:16  咫尺流云  阅读(74)  评论(0编辑  收藏  举报