reinterpret_cast(原类型变量)//重解释类型转换
dynamic_cast(expression)//动态类型转换
static_cast(expression)//静态类型转换
const_cast(expression)//返回一个指向非常量的指针
1.const_cast:常量指针被转化成非常量的指针,并且仍然指向原来的对象;常量引用被转换成非常量的引用,并且仍然指...
分类:
编程语言 时间:
2015-08-11 18:52:37
阅读次数:
135
隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到floa...
分类:
其他好文 时间:
2015-08-08 06:30:52
阅读次数:
151
c++中dynamic_cast的作用
#include
#include
//Someone eles's code,eg.library
class IGlyph
{
virtual ~IGlyph(){}
virtual std::string Text() = 0;
virtual IIcon* Icon() = 0;
//...
};
class IWidget...
分类:
编程语言 时间:
2015-07-31 20:22:15
阅读次数:
187
在知乎上看到关于“Cpp的异常”的讨论,在此整理一下。C++ 引入异常的原因:1、为了能让构造函数报错(析构函数不能抛异常这是大家都知道的常识),毕竟构造函数没有返回值,没有异常的话调用方如何得知对象构造是否成功呢?2、让 dynamic_cast(baseReference) 能报错,因为没有 n...
分类:
其他好文 时间:
2015-07-30 23:05:32
阅读次数:
146
RTTI(Run-Time Type Identification)是面向对象程序设计中一种重要的技术。现行的C++标准对RTTI已经有了明确的支持。不过在某些情况下出于特殊的开发需要,我们需要自己编码来实现。本文介绍了一些关于RTTI的基础知识及其原理和实现,并分析比较三者是线上的差异与联系。...
分类:
编程语言 时间:
2015-07-26 22:43:46
阅读次数:
177
RTTI(Run-Time Type Information,通过运行时类型信息)程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。c++有三个支持RTTI的元素
1)如果可能的话,dynamic_cast运算符将使用一个指向基类的指针来生成一个指向派生类的指针,否则,该运算符返回0 ——空指针。
dynamic_cast (pt);
通常,如果指向...
分类:
编程语言 时间:
2015-07-26 22:39:46
阅读次数:
208
(一个)C风格遗留转换:(T)expressionT(expression)(二)C++提供四种新式转型:(1)const_cast(expression):去除表达式的常量性。是C++中唯一能做此操作的转型操作符。(2)dynamic_cast(expression):主要用来运行“安全向下转型”...
分类:
编程语言 时间:
2015-07-24 14:13:54
阅读次数:
177
一、定义:RTTI:Run Time Type Identification ,运行时类型识别:指程序能够使用基类的指针或引用来检索其所指对象的实际派生类型。
二、使用方式:C++中有两个操作符提供RTTI:
(1)typeid 操作符:返回指针或引用所指对象的实际类型。
(2)dynamic_cast 操作符:将基类类型的指针或引用安全地转换为派生类型的指针和引用。
注:此二操作符只为带有一个...
分类:
编程语言 时间:
2015-07-24 12:47:53
阅读次数:
210
作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别。除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象。而dynamic_cast则不然。在这里,不再讨论其他三种转换和C风格的转换。首先,dyn...
分类:
编程语言 时间:
2015-07-22 22:32:17
阅读次数:
150
c/c++强制类型转换Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换...
分类:
编程语言 时间:
2015-07-22 22:05:58
阅读次数:
119