const_cast<type-id>(expression)
//**********************//类类型classB{public:intm_num;B():m_num(50){}};voidfoo(void){constB*b1=newB();B*b2=const_cast<B*>(b1);b2->m_num=200;cout<<"b1:"<<b1->m_num<<endl;//200cout<<"b2:"<<b2->m_num<<endl;//200constBb3;Bb4=const_cast<B&>(b3);b4.m_num=300;cout<<"b3:"<<b3.m_num<<endl;//50cout<<"b4:"<<b4.m_num<<endl;//300}//************************//
//************************//基本类型voidfoo(){constinta=100;int*p1=const_cast<int*>(&a);*p1=200;cout<<*p1<<endl;//200cout<<a<<endl;//100constint*p2=newint(100);int*p3=const_cast<int*>(p2);*p3=200;cout<<*p2<<endl;//200cout<<*p3<<endl;//200}//************************//
你会发现:
A:可以为基本类型或者类类型;
const A a;随便怎么修改a都不会变化
const A* p = new A();去掉p的const属性后,*p就变化了.
//*****************//classA{public:A(){m_num=1;}intm_num;};voidfoo(void){Aa;constA&r=a;Aa1=const_cast<A&>(a);a1.m_num=200;cout<<a1.m_num<<endl;//200cout<<a.m_num<<endl;//1}//****************//
const_cast<type-id>(expression)中,type-id只能为指针或引用,其他的都错,这个表达式即可以去除
expression中的const属性或volatil属性,还能增加const属性或者volatil属性
const int i = 10;
int i1 = const_cast<int>(i) //错误
增加const属性与volatil属性相反.
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。