C++类型转换:static_cast和const_cast

static_cast类似于C语言中的强制类型转换,用来进行类型转换。

const_cast只能将对象由const型转成非const,除了const变为非const之外,对象原有的类型不能被改变。改变转换后的对象的值,原有的const的对象并不会被改变。

下面的程序是const_cast的一个应用场合,该程序用来判断一个string中是否有大写字母。由于形式参数是const型,需先将str转成非const型的。

bool ifupper(const string &str)
{
string::iterator it = const_cast<string&>(str).begin();
for (; it != str.end(); ++it)
{
if (isupper(*it))
{
return 1;
}
}
return 0;
}

时间: 2024-10-10 07:22:39

C++类型转换:static_cast和const_cast的相关文章

static_cast, dynamic_cast, const_cast探讨

C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为"标准转换",包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型. int ival = 3;double dval = 3.14159;ival + dval;//ival被提升为double类型 2)一种类型表达式赋值给另一种类型的对象:目标类型是被赋值对象的类型 int *pi = 0; // 0被转化为int

static_cast, dynamic_cast, const_cast

[C++专题]static_cast, dynamic_cast, const_cast探讨 首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为"标准转换",包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型. int ival = 3;double dval = 3.14159; ival + dval;//ival被提升为doubl

static_cast,const_cast,reinterpret_cast,dynamic_cast详解

body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { fon

static_cast 、const_cast、dynamic_cast、reinterpret_cast 关键字简单解释

static_cast .const_cast.dynamic_cast.reinterpret_cast 关键字简单解释: Static_cast 静态类型转换 ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换. 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的: 进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的. ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum.这种转换的安全性也要开发人员来保

c++强制类型转换(static_cast,const_cast,dynamic_cast,reinterpret_cast)

static_cast <typeid>(exdlvssion) static_cast 很像 C 语言中的旧式类型转换.它能进行基础类型之间的转换,也能将带有可被单参调用的构造函数或用户自定义类型转换操作符的类型转换,还能在存有继承关系的类之间进行转换(即可将基类转换为子类,也可将子类转换为基类),还能将 non-const对象转换为 const对象(注意:反之则不行,那是const_cast的职责.). double d = 3.14159265; int i = static_cast&

【C++专题】static_cast, dynamic_cast, const_cast探讨

首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型. 1 int ival = 3; 2 double dval = 3.14159; 3 4 ival + dval;//ival被提升为double类型 2)一种类型表达式赋值给另一种类型的对象:目标类型是被赋值对象的类型 int

C++之static_cast, dynamic_cast, const_cast

转自:http://www.cnblogs.com/chio/archive/2007/07/18/822389.html 首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型. int ival = 3;double dval = 3.14159; ival + dval;//iva

【c++程序】static_cast和const_cast用法

#include<iostream> using namespace std; #include<cstdlib>//标准c++不带.h,说明来自c语言 //static_cast,const_cast,reinterpret_cast,dynamic_cast强制类型转换 //const_cast用于临时去掉const.volatile限制 int main() { //int n=3.21; int m=static_cast<int>(3.2); int *p=s

dynamic_cast、static_cast、const_cast和reinterpret_cast的区别

           C++的类型转换分为两种:隐式转换和显示转换. 一. 对于隐式转换,就是标准的转换,在很多时候,不经意间就发生了,例如int和float加法,int类型就会被隐式转换为float了,这种称为升级转换.还有就是把等号右边的值转换为左边的类型,再赋值.还有类变量作为参数传递给函数: class B { public: int num; B(int a) { num=a; } } B show(B b) { return b; } show(5);//这里也发生了隐式转换,将5转