首页 > 其他 > 详细

const_cast, reinterpret_cast, static_cast的用法

时间:2014-07-07 18:57:19      阅读:350      评论:0      收藏:0      [点我收藏+]
///////////////////////////////////////////////////////////////////////////////
//
//  FileName    :   cast_item27.cpp
//  Version     :   0.10
//  Author      :   Ryan Han
//  Date        :   2013/10/31 15:43:55
//  Comment     :  
//    
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;

int main() {
    //static_cast
    int a = 4;
    a = 5;
    const int b = static_cast<const int>(a);
    cout << "b is: " << b << endl;
    
    //dynamic_cast
    //see D:\cygwin\home\baoweih\code_book\c++ primer\p838_dynamiccast.h
    
    //reinterpret_cast
    char* k = reinterpret_cast<char*>(b);
        
    //const_cast
    //http://www.cnblogs.com/dracohan/p/3417842.html
    const int* i = &b;
    //compile error, invalid conversion from ¡®const int*¡¯ to ¡®int*¡¯
    //int* j = i;
    int* j = const_cast<int*>(i);
    //successfully change a const value
    *j = 6;
    cout << "b is: " << b << endl;
    
    //reference
    const int& l = b;
    int& m = const_cast<int&>(l);
    //error: assignment of read-only reference ¡®l¡¯
    //l = 7;
    //successfully change a const reference
    m = 7;
    cout << "b is: " << b << endl;

    //const point
    const int* const pint = new int(1024);
    // can‘t change *pint
    //*pint = 1023;
    // cant‘ change pint also
    //pint = new int(1023);
    int* const fake_pint = const_cast<int* const>(pint);
    // can change *pint now
    *fake_pint = 1023;
    // still cant‘ change pint also
    //fake_pint = new int(1023);



    cout << "*fake_pint is: " << *fake_pint << endl;
    
        
    return 0;
}

 

const_cast, reinterpret_cast, static_cast的用法,布布扣,bubuko.com

const_cast, reinterpret_cast, static_cast的用法

原文:http://www.cnblogs.com/dracohan/p/3813377.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!