const_cast is safe only if you're casting a variable that was originally non-const. For example, if you have a function that takes a parameter of a const char *, and you pass in a modifiable char *, it's safe to const_cast that parameter back to a char * and modify it. However...
//新式转换 ://转换操作符 ://const_cast : 主要用来修改类型的 const 与 volatile 属性 ,// 将不可修改属性 const 转为 可修改的属性// volatile 属性作用 : 保证获取一个变量值时 , 重新从内存读取该属性 ;//将 const char* 类型变量 转为 char* 类型的变量// 可以理解成将常量转为变量 , 这里也...
const_cast:用来消除const, volatile, __unaligned属性的转换。 reinterpret_cast:用于空间的重新解释。 还有一个在VS2005中出现的类型转换关键字safe_cast.#2 static_cast: static_cast<type_id>(expression) 这个关键字可以用来将一个指针转换为父类的指针也可以转换为子类的指针或者基本的类型转换。但是这种转换是...
1. 类型转换方式 : ① C 语言中的强制类型转换 , ② 使用转换操作符进行转换 ; 2. const_cast 转换操作符 : 主要用来修改类型的 const 与 volatile 属性 ; ① const 属性作用 : 修饰常量 ; ② volatile 属性作用 : 保证获取一个变量值时 , 重新从内存读取该属性 ; ...
《Effective C++》中将c语言强制类型转换称为旧式转型,c++强制类型转换称为新式转型。 2. static_cast、dynamic_cast、const_cast、reinterpret_cast static_cast static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为new_type类型,用来强迫隐式转换,例如non-const对象转为const对象,编译时检查,用于非...
const_cast < type-id > ( expression ) 主要是用来去掉const属性,当然也可以加上const属性。主要是用前者,后者很少用。 去掉const属性:const_case<int*> (&num),常用,因为不能把一个const变量直接赋给一个非const变量,必须要转换。 加上const属性:const int* k = const_case<const int*>(j),一般很少用...
longn=static_cast<long>(m);//宽转换,没有信息丢失charch=static_cast<char>(m);//窄转换,可能会丢失信息int*p1=static_cast<int*>(malloc(10*sizeof(int)));//将void指针转换为具体类型指针void*p2=static_cast<void*>(p1);//将具体类型指针,转换为void指针doublereal=static_cast<double>(c);//...
static_cast可以视为C语言强制类型转换的替代品。6.4、reinterpret_cast用于将一种类型转换为另一种不同的类型。它可以将整型转换为指针,或将指针转换为整型。然而,这种转换是危险的,因为它会改变数据的解释方式,可能导致未定义行为。因此,通常不建议使用reinterpret_cast。
reinterpret_cast 等价于C语言显示强转 一般不推荐使用,不安全 classFather{};classSon:publicFather{};intmain(){intn=1;int*p=(int*)n;//C语言显示强转//用于各种高危强转//整型转指针int*p=reinterpret_cast<int*>(n);//父类,子类指针的转换Father*pFather=nullptr;Son*pSon;pSon=reinterpret_cast<Son...