Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1261554
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: LINUX

2011-03-02 13:52:26

static_cast 
void MainBar::mousePressEvent(QGraphicsSceneMouseEvent *event)

 int a=static_cast(event->pos().x() / ICON_SIZE);
}
用法:static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。
它主要有如下几种用法:
 ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;   
 进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。   
 ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。   
 ③把空指针转换成目标类型的空指针。   
 ④把任何类型的表达式转换成void类型。   
 注意:static_cast不能转换掉expression的const、volitale、或者__unaligned属性。    
 
 C++中static_cast和reinterpret_cast的区别   
 C++primer第五章里写了编译器隐式执行任何类型转换都可由static_cast显示完成;
 reinterpret_cast通常为操作数的位模式提供较低层的重新解释   
 1、C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作。因此,被做为隐式类型转换使用。
 比如: int i;     float f = 166.7f;   
  i = static_cast(f); 此时结果,i的值为166。   
 2、C++中的reinterpret_cast主要是将数据从一种类型的转换为另一种类型。
 所谓“通常为操作数的位模式提供较低层的重新解释”. 也就是说将数据以二进制存在形式的重新解释。
 比如:   
  int i;   char *p = "This is a example.";   
  i = reinterpret_cast(p);   
  此时结果,i与p的值是完全相同的。reinterpret_cast的作用是说将指针p的值以二进制(位模式)的方式被解释为整型,并 赋给i,//i 也是指针,整型指针;一个明显的现象是在转换前后没有数位损失。
阅读(1603) | 评论(0) | 转发(0) |
0

上一篇:Qt编译

下一篇:QT知识集锦之一

给主人留下些什么吧!~~