一、整体代码
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用来移除对象的常量性。一般用于指针或者引用,去除常量性,不是为了修改原变量的值,而是为了函数间传递参数。