dynamic_cast

C++与类型转换相关的四个关键字

南笙酒味 提交于 2019-11-30 17:18:42
C++与类型转换相关的四个关键字有:const_cast、static_cast、dynamic_cast、reinterpret_cast C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a。 C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。 reinterpret_cast,仅仅重新解释类型,但没有进行二进制的转换。 4种类型转换的格式,如:TYPE B = static_cast(TYPE)(a)。 const_cast 去掉类型的const或volatile属性。 static_cast 类似于C风格的强制转换。无条件转换,静态类型转换。用于: 1. 基类和子类之间转换:其中子类指针转换成父类指针是安全的;但父类指针转换成子类指针是不安全的。(基类和子类之间的动态类型转换建议用dynamic_cast) 2. 基本数据类型转换。enum, struct, int, char, float等。static_cast不能进行无关类型(如非基类和子类)指针之间的转换。 3.

static_cast与dynamic_cast转换

时间秒杀一切 提交于 2019-11-30 17:14:22
一 C 语言中存在着两种类型转换: 隐式转换和显式转换 隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成 char ch; int i = ch; 显示转换:在类型前增加 :(Type)变量 对变量进行的转换。用户显式增加 char *pc = ( char *)pb; void *ps = ( void *)pa; 二 C++ 中的类型转换   通过这两种方式,C语言中大部分的类型转换都可以顺利进行。 至于能不能进行转换,转换后的结果如何,编译器不管需要用户自己去控制。   C++继承了C中的隐式和显式转换的方式。但这种转换并不是安全和严格的, 加上C++本身对象模型的复杂性,C++增加了四个显示转换的关键字。(C++是强类型语言) ( static_cast , dynamic_cast , const_static , reinterpret_cast ) 1 static_cast (1 )用于基本的数据类型转换(char ,int ),及指针之间的转换 test_enum type = test_enum_1; char a ; int b = static_cast < int >(a); char c = static_cast < char >(b); type = static_cast <test_enum>(b); char * pa =

C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

偶尔善良 提交于 2019-11-29 13:46:31
C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast 1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换格式1 type-id(expression)//转换格式2 c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化,语法为: static_cast<new_type> (expression) dynamic_cast<new_type> (expression) const_cast<new_type> (expression) reinterpret_cast<new_type> (expression) 备注:new_type为目标数据类型,expression为原始数据类型变量或者表达式。 《Effective C++》中将c语言强制类型转换称为 旧式转型 ,c++强制类型转换称为 新式转型 。 2. static_cast、dynamic_cast、const_cast、reinterpret_cast static_cast static