四类cast转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

PS:volatile 提醒编译器它后面所定义的变量随时都可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。而不是优化读取和存储。

static_cast:

	static_cast相当于传统的C语言的强制转换,用来**强迫隐式转换**(低级到高级),例如non-const对象转换为const对象。

dynamic_cast:

	dynamic_cast主要用于**类层次间**的上行转换和下行转换。
	dynamic_cast语句的转换目标是指针类型失败,则结果为0.如果是引用,则dynamic_cast运算符将抛出一个std::bad_cast异常。(typeinfo标准库文件中)
	PS:在类层次间进行**上行转换**时,dynamic_cast和static_cast的效果是一样的;在进行**下行转换**时,dynamic_cast具有类型检查的功能,比static_cast更安全。
	PS:1.虚函数是重载的另一种表现形式,虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,即所谓的**动态联编**。2.基类的对象指针可以指向它的公有派生的对象,但是当其指向公有派生类对象,它只能访问派生类中从基类继承来的成员,而不能访问公有派生类中定义的成员。如果设置成虚函数,那么程序在运行时根据指针mp所指向的实际对象,调用该对象的成员函数。只有通过基类指针访问虚函数时才能获得运行的多态性。

const_cast

	const_cast,用于修改类型的const或volatile属性。

reinterpret_cast

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值