温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

const_cast<type-id>(expression)

发布时间:2020-05-24 11:15:57 来源:网络 阅读:402 作者:神ge 栏目:编程语言
//**********************// 类类型 class B{     public:         int m_num;         B():m_num(50){} };                                                                                                                                      void foo(void) {     const B* b1 = new B();     B* b2 = const_cast<B*>(b1);     b2->m_num = 200;     cout <<"b1:" << b1->m_num << endl;//200     cout <<"b2:" << b2->m_num << endl;//200     const B b3;     B b4 = const_cast<B&>(b3);     b4.m_num = 300;     cout << "b3:" << b3.m_num << endl;//50     cout << "b4:" << b4.m_num << endl;//300 } //************************//
//************************// 基本类型 void foo(){     const int a = 100;     int* p1 = const_cast<int*>(&a);     *p1 = 200;     cout << *p1 << endl;//200     cout << a << endl;//100     const int* p2 = new int(100);     int* p3 = const_cast<int*>(p2);     *p3 = 200;     cout << *p2 << endl;//200                                                        cout << *p3 << endl;//200 } //************************//

你会发现:

A:可以为基本类型或者类类型;

const A a;随便怎么修改a都不会变化

const A* p = new A();去掉p的const属性后,*p就变化了.


//*****************// class A{     public:                                                                              A(){             m_num=1;         }            int m_num; }; void foo (void){     A a;     const A &r = a;     A a1 = const_cast<A&>(a);     a1.m_num = 200;     cout << a1.m_num << endl;//200     cout << 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属性相反.




向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI