43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
// const 转换
|
||
#include <iostream>
|
||
|
||
using namespace std;
|
||
|
||
void change(const int *p, int value)
|
||
{
|
||
int *q = const_cast<int *>(p); // 转换为非 const 指针
|
||
*q = value;
|
||
}
|
||
|
||
int main()
|
||
{
|
||
int a = 10;
|
||
const int b = 30; // 存储在符号表,在栈中没有空间
|
||
// 1. 将变量转化为 const 引用变量【可以】
|
||
const int &a1 = const_cast<const int &>(a);
|
||
// 2. 将变量地址转化为 const 指针变量【可以】
|
||
const int *a2 = const_cast<const int *>(&a);
|
||
|
||
// 3. 去掉 b 的 const 修饰
|
||
// b 在取地址时在占中开辟空间,b1 指向空间
|
||
// int b1 = const_cast<int>(b);【不可以】
|
||
int &b1 = const_cast<int &>(b);
|
||
b1 = 100;
|
||
cout << "b = " << b << endl;
|
||
cout << "b1 = " << b1 << endl;
|
||
|
||
// 4. 去掉 a2 的 const 修饰
|
||
int *a3 = const_cast<int *>(a2);
|
||
*a3 = 200;
|
||
cout << "*a2 = " << *a2 << endl;
|
||
cout << "*a3 = " << *a3 << endl;
|
||
|
||
// 5. 将 a3 转化为 const 指针变量【可以】
|
||
const int *a4 = const_cast<const int *>(a3);
|
||
// *a4 = 100;
|
||
cout << "*a4 = " << *a4 << endl;
|
||
cout << "*a3 = " << *a3 << endl;
|
||
|
||
return 0;
|
||
}
|