码迷,mamicode.com
首页 > 其他好文 > 详细

const_cast<type-id>(expression)

时间:2016-10-30 01:22:06      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:const_cast 常属性

//**********************//
类类型
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属性相反.




本文出自 “12208412” 博客,请务必保留此出处http://12218412.blog.51cto.com/12208412/1867169

const_cast<type-id>(expression)

标签:const_cast 常属性

原文地址:http://12218412.blog.51cto.com/12208412/1867169

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!