当前位置: 代码迷 >> 综合 >> const_cast
  详细解决方案

const_cast

热度:25   发布时间:2024-02-07 06:16:25.0
#include<iostream>
using namespace std;
int main(){int a=2,b=3,*q;const int *p=&a;q=const_cast<int*>(p); //将常量指针转化为非常量指针,并且仍指向原来对象*q=b;cout<<"a的值:"<<a<<endl;cout<<"*p的值:"<<*p<<endl;cout<<"*q的值:"<<*q<<endl;cout<<"b的值:"<<b<<endl;cout<<"a的地址:"<<&a<<endl;cout<<"*p的地址:"<<p<<endl;cout<<"*q的地址:"<<q<<endl;cout<<"b的地址:"<<&b<<endl;
}

运行结果:

                 a的值:3

                 *p的值:3

                 *q的值:3

                 b的值:3

                 a的地址:0x6ffdfc

                 *p的地址:0x6ffdfc

                 *q的地址:0x6ffdfc

                 b的地址:0x6ffdf8

a和b的地址不一样,b的值赋给*q, *q->*p->a,地址一样

#include<iostream>
using namespace std;
int main(){int a=2,b=3,*q;const int *p=&a;q=const_cast<int*>(p);q=&b;cout<<"a的值:"<<a<<endl;cout<<"*p的值:"<<*p<<endl;cout<<"*q的值:"<<*q<<endl;cout<<"b的值:"<<b<<endl;cout<<"a的地址:"<<&a<<endl;cout<<"*p的地址:"<<p<<endl;cout<<"*q的地址:"<<q<<endl;cout<<"b的地址:"<<&b<<endl;
}

运行结果:

              a的值:2
*p的值:2
*q的值:3
b的值:3
a的地址:0x6ffdfc
*p的地址:0x6ffdfc
*q的地址:0x6ffdf8
b的地址:0x6ffdf8
q的地址发生改变,b的地址->q