现在的位置: 首页 > 综合 > 正文

C++ 新的类型转换(const_cast)

2013年02月26日 ⁄ 综合 ⁄ 共 677字 ⁄ 字号 评论关闭

一、整体代码

      01.cpp

#include <iostream>
#include <stdio.h>
using namespace std;
void fun(int& val)
{
    cout<<"fun"<<val<<endl;
}
int main(void)
{
    const int val = 100;
    //int n = const_cast<int>(val);没有意义,因为int n =val就是这个意思。会报错。

    const int val1=200;
    //int* p=&val;//不能从const int* 转换为int*。
    int* p=const_cast<int*>(&val);//一般用于指针和引用
    //*p=100;//不能改变val1的值

    const int val2=300;
    //int& refval2=val2;不能从const int& 转换为int&。
    int& refval2=const_cast<int&>(val2);//一般用于指针和引用

    const int val3=400;
    fun(const_cast<int&>(val3));//一般用于传递值
    //fun(val3);相当于int& val = val3;会报不能从const int& 转换为int&。

    int n =static_cast<int>(3.14);
    void* p1 = &n;
    int* p2 = static_cast<int*>(p);

    return 0;
}

二、运行结果

       fun400


三、解释

   const_cast用来移除对象的常量性。一般用于指针或者引用,去除常量性,不是为了修改原变量的值,而是为了函数间传递参数。         

抱歉!评论已关闭.