const_cast、static_cast、dynamic_cast总结实例

#include
#include
#include
#include
#include
using namespace std;
struct SA
{
int i;
};
enum enumtest
{
A=1,
B
};
class Base
{
public:
int m;
virtual void fun()
{}
};
class Dclass :public Base
{
public:
void bar() {}
};
int main()
{
/static_cast dynamic_cast const_cast/
/const_cast/
const SA ra{100};
//ra.i = 10; zhi jie xiu gai wrong
SA &rb = const_cast<SA&>(ra);
SA rc = const_cast<SA>(&ra);
rb.i = 200;
cout << ra.i << endl;//xiu gai le ra and rb de zhi
/static_const just like c language/
enumtest a = B;
int ab = static_cast(a);//hu xiang zhuan huan
cout << ab << endl;
int n = 6;
double an = static_cast(n);
cout << an << endl;
//double *pn = static_cast<double *>(n);//bao cuo wu fa zhuan huan
/dynamic_cast/
Base *bp = new Dclass();//bp1->Dclass
Dclass *pd1 = dynamic_cast<Dclass *>(bp);//no problem
Dclass *pd2 = static_cast<Dclass *>(bp);//no problem

Base *bp1 = new Base();//bp1->base
Dclass *pd11 = dynamic_cast<Dclass *>(bp);//safety
Dclass *pd22 = static_cast<Dclass *>(bp);//problem
system("pause");
return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值