static_cast是静态类型转换,“静态”一词是指在程序编译期间完成类型的转换,这应该是平时使用最多的类型转换。例如,将一个浮点数转化为整数,就可以使用static_cast: 复制代码 floata =10.5;intb =static_cast<int>(a); 2. dynamic_cast dynamic_cast是动态类型转换,“动态”一词是指在程序运行期间完成类型的转...
dynamic_cast只能用于含有虚函数的类; 进行上行转换的时候,与static_cast 的作用一样。下行转换的时候,具有类型检查的功能,比static_cast更安全。 dynamic_cast会先检查是否能转换成功,如果能则转换,不能则返回0。 class B { public: int m_iNum; virtual void foo(); }; class D : public B { public: c...
1.static_cast在编译时期强制转换,dynamic_cast在运行时期转换(较安全) 2.static_cast是c语言的强制转换代替品;dynamic_cast会运行时检查该转换是否类型安全,只在多态类型时合法,即该类至少具有一个虚拟方法。 其中static_cast是相当于C的强制类型转换,用起来可能有一点危险。dynamic_cast在转换前会检查指针(或引用)...
1) static_cast:和C风格转换相似可做值的强制转换,或指针的父类到子类的明确的向上转换; 2) const_cast:移除const属性; 3) reinterpret_cast:指针类型和整型或其他指针间不安全的相互转换,仅在你对所做一切了然于心时使用;(主要用于指针间的转换, 例如 const void* 与const char*间的转换, 又或者c 二进制 ...
简介:1.static_cast在编译时期强制转换,dynamic_cast在运行时期转换(较安全) 2.static_cast是c语言的强制转换代替品;dynamic_cast会运行时检查该转换是否类型安全,只在多态类型时合法,即该类至少具有一个虚拟方法。 1.static_cast在编译时期强制转换,dynamic_cast在运行时期转换(较安全) ...
dynamic_cast是试探映射,如dynamic_cast<A>*pB意思是“我希望它是A*,并打算要求它是”。它通常被称为类层次的动态导航。而static_cast通常可用于类层次的静态导航,无映射变换,窄化变换(会丢失信息)等等,static_cast的应用要广一些,但如前所提到的,在类层次导航变换中我们应该使用前者,因为...
static_cast 之间的区别 它可以用于类型之间的任何正常转换,依赖于静态(编译时)类型信息的转换。这包括任何转换 四种不同的转换运算符适用于 Windows 运行时类型:static_cast 运算符、dynamic_cast 运算符、safe_cast 运算符和 reinterpret_cast 运算符。safe_cast 和 static_cast 在无法进行转换时抛出异常;static_ca...
1、dynamic_cast:运行时检查,用于多态的类型转换(upcast,downcast和crosscast),只能转换指针和引用。 2、static_cast:编译时检查,用于非多态的转换,可以转换指针及其他,比如:int->float还可以逆隐式转换,比如:int->char 注意:使用dynamic_cast转换成子类时,基类中必须有虚函数,才不会报错,否则编译失败(因为dynamic_...
(static_cast,dynamic_cast,const_static,reinterpret_cast) 1 static_cast (1)用于基本的数据类型转换(char,int),及指针之间的转换 test_enum type = test_enum_1; 1. char a ; 1. int b = static_cast<int>(a); 1.