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 }