在C++中,const_cast用于移除对象的const属性,使得非const成员函数可以被调用。这在某些情况下非常有用,例如当你需要调用一个不是const的成员函数,但是你的对象是const的时候。 const_cast的用法如下: 代码语言:cpp 复制 const MyClass obj; MyClass* nonConstObj = const_cast<MyClass*>(&obj); 在这个例子...
C++ const_cast 和重载 在4.11.3节(第145页)中我们说过,const_cast 在重载函数的情景中最有用。举个例子,回忆6.3.2节(第201页)的shorterstring 函数://比较两个string对象的长度,返回较短的那个引用 const string &shorterString(const string &sl,const string &s2) { return sl.size()<= s2.size()?
chara ='a';intb = static_cast<char>(a);//正确,将char型数据转换成int型数据double*c =newdouble;void*d = static_cast<void*>(c);//正确,将double指针转换成void指针inte =10;constintf = static_cast<constint>(e);//正确,将int型数据转换成const int型数据constintg =20;int*h = static_ca...
C++ 代码与旧的 C 代码集成时,旧代码可能并未使用const限定符。这种情况下,可能需要使用const_cast以...
不幸的是,转型(cast)破坏了类型系统(type system),那可能导致任何种类的麻烦,有些容易辨识,有些非常隐晦。 现实情况是类型转换在开发中无法避免,在开始探讨C++的类型转换以前我们先看下C风格的类型转换。 (T)varibale T(variable) 这种旧式类型转换目前依旧经常被用到,但是新式类型转换却更应该被我们去使用,这是...
如果有一个函数,它的形参是non-const类型变量,而且函数不会对实参的值进行改动,这时我们可以使用类型为const的变量来调用函数,此时const_cast就派上用场了。 例如: 代码语言:javascript 复制 voidInputInt(int*num){cout<<*num<<endl;}intmain(){constint constant=21;//InputInt(constant); //error C2664: ...
1. 类型转换方式 : ① C 语言中的强制类型转换 , ② 使用转换操作符进行转换 ; 2. const_cast 转换操作符 : 主要用来修改类型的 const 与 volatile 属性 ; ① const 属性作用 : 修饰常量 ; ② volatile 属性作用 : 保证获取一个变量值时 , 重新从内存读取该属性 ; ...
int*pa=const_cast<int*>(&a);//通过const_cast去除常量性 *pa=2;//通过pa对a赋值 cout<<"a="<<ra<<" addr="<<&ra<<endl;//输出:a=2 addr=0x62fe0c cout<<"*pa="<<*pa<<" addr="<<pa<<endl;//输出:*pa=2 addr=0x62fe0c ...
static_cast: 一般的转换,no run-time check.通常,如果你不知道该用哪个,就用这个。 reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。 1)static_cast<T*>(a) 编译器在编译期处理 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。