1、std::static_pointer_cast():当指针是智能指针时候,向上转换,用static_cast 则转换不了,此时需要使用static_pointer_cast。 2、std::dynamic_pointer_cast():当指针是智能指针时候,向下转换,用dynamic_cast 则转换不了,此时需要使用dynamic_pointer_cast(此处注意:base基类需要至少有一个virtual成员函数(即多态类...
一、static_cast和dynamic_cast区别: 1、static_cast:向上转换,例如:基类向派生类转换 2、dynamic_cast:向下转换,例如:派生类向基类转换 二、static_poonter_cast和dynamic_pointer_cast区别同上,不过这两个只适用于智能指针
其实,static_cast相当于我们程序员对编译器的一种承诺:我们清楚地知道这样转存在的任何风险,并且我们能够接受这样的风险。所以,当我们用static_cast将父类指针转换成子类指针时,编译器不报错。而dynamic_cast是在运行时执行类型转换,用于将基类的指针安全地转换成派生类的指针,也就是说,dynamic_cast会进行动态类型检查。
dynamic_cast的原理 11:31 腾讯C++后端二面:了解写时复制技术吗?fork 的细节是怎么样的? 14:56 B站C++一面:unique_ptr是怎么实现的?unique_ptr 和 shared_ptr 删除器的设计差异? 09:31 金山WPS c++ 一面:std::sort 使用了哪种排序算法? 12:39 小米C++二面:说一下类成员初始化顺序? 09:21 ...
static_cast和dynamic_cast都是C++中的类型转换操作符,但它们有着不同的用途和限制: static_cast:静态类型转换 static_cast进行的是编译时的类型转换,只能用于已知的类型之间的转换,且不能转换掉const、volatile等属性。主要用于基本数据类型的转换、隐式转换的显式化和向上转型(子类指针或引用转为父类指针或引用)。
static_cast和dynamic_cast的区别如下:转换时机:static_cast:进行的是编译时的类型转换,即在代码编译阶段就已经确定了转换的结果。dynamic_cast:在运行时执行类型转换,即程序运行到该转换语句时才进行类型判断和执行转换。适用范围:static_cast:适用于已知类型的转换,包括基本数据类型转换、隐式转换的...
static_cast和 reinterpret_cast的几种使用场景 2. reinterpret_cast<void *>()重新解释转换 A:指针与整数之间的转换: B:指针之间的转换 C:不相关类型的指针之间的转换 D:函数指针之间的转换: 3. const_cast 常量转换 4. dynamic_cast 动态转换 5. 重点-深入理解下reinterpret_cast的转换原理? 在C++编程中,...
答:static_cast?用于有比较明确定义的变换,包括不需要强制转换的变换。 dynamic_cast适用于类型安全的向下转换,常用在继承中的父类指针向子类指针的转换。若转换成功则返回改类型的指针,若失败,则返回NULL。 1.Struct?和class?的区别。 答:struct是一种结构体类型的标志,它和C++中的Class很相似。 C++中两者的唯一...
static_cast进行的是编译时的类型转换,仅适用于已知类型的转换,且不支持对const、volatile等属性的转换。主要用于基本数据类型转换,隐式转换的显式化以及向上转型,例如将整数转换为浮点数或子类指针转为父类指针。动态类型转换则由dynamic_cast实现,它在运行时执行,可在基类与派生类间进行转换,并能...
[C++ 从入门到精通] 6.static_cast、dynamic_cast等显示类型转换,含义:隐式类型转换:系统自动进行,不需要开发人员介入。intm=3+45.6;//48因为返回的int型,所以系统自动去除掉小数点后面的值,结果为48,这种属于隐式转换类型。