一、整体代码
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&。
子类* p2 = static_cast<父类*>(p);
return 0;
}
二、运行结果
fun400
三、解释
const_cast用来移除对象的常量性。一般用于指针或者引用,去除常量性,传递过去后只能用原来的常量,不能改变原来的参数。
static_cast用来把父类的对象指针,转换为子类的对象指针。