`
把酒泯恩仇
  • 浏览: 27172 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

C++四种新式转换

c++ 
阅读更多
感觉在面试中,总是被问及转换类型问题,所以在大面试来临之前,复习一下,其实之前也没有怎么区分,因为实际中,特别是编一个小程序,我不是经常在用。

以下是C++的四种转换机制:

view plaincopy to clipboardprint?
const_cast<T> ( expression )  
dynamic_cast<T> ( expression )  
reinterpret_cast<T> ( expression )  
static_cast<T> ( expression )  

const_cast通常被用来将对象的常量性质转除。它也是唯一有此功能的C++-Style转型操作符。其意思是将一个const转化为non-const。
dynamic_cast主要用来执行”安全向下转型“,也就是用来决定某对象是否归属继承体系中的某个类型。它也是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。
reinterpret_cast意图执行低级转型,实际动作可能取决编译器,这也就是表明它不可移植。
static_cast用来强迫隐式转换,例如将non-const对象专为const对象,或将int转换成double等等,它也可以用来执行上述多种类型的反向转换,例如将void*指针专为typed指针,将pointer-to-base转为pointer-to-derived。但无法将const转为non-const这个只有const_cast才能做到。
注:文本来自《Effective C++》



-----------------打造高质量的文章 更多关注 把酒泯恩仇---------------

为了打造高质量的文章,请  推荐  一下吧。。。。谢谢了,请关注我后续的文章,会更精彩哦

请关注sina微博:http://weibo.com/baiyang26

把酒泯恩仇官方博客:http://www.ibaiyang.org 【推荐用google reader订阅】

把酒泯恩仇官方豆瓣:http://www.douban.com/people/baiyang26/

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言
1
0
分享到:
评论

相关推荐

    电子书 深入理解C++11(PDF)

    6. **智能指针(Smart Pointers)**:C++11标准库提供了三种智能指针:`std::unique_ptr`、`std::shared_ptr`和`std::weak_ptr`,它们自动管理内存,避免了传统的指针可能导致的内存泄漏问题。 7. **多线程支持(std::...

    Excel文件存取 C++

    在IT行业中,C++是一种强大的编程语言,常用于开发高性能的应用程序。当涉及到与Excel文件交互时,C++可以通过各种库来实现对Excel文件的读取和写入操作。本篇将详细介绍如何在C++中处理Excel文件,以及转换为文本...

    C++11深度剖析.PDF

    10. **新式初始化(List Initialization)**:使用`std::initializer_list`进行初始化,防止了隐式类型转换引发的问题,提高了代码安全性。 11. **变长参数模板(Variadic Templates)**:允许模板接受任意数量的...

    C++中不能重载的运算符

    6. **新式类型转换运算符**: - C++引入了新的类型转换运算符,如 `static_cast&lt;&gt;`、`dynamic_cast&lt;&gt;`、`const_cast&lt;&gt;` 和 `reinterpret_cast&lt;&gt;`。这些运算符旨在提供更安全、更清晰的类型转换方式。由于它们是C++...

    C语言和C++语言的区别.docx

    10. **文件包含**:C++中的标准库头文件如`iostream`不使用`.h`后缀,这是C++引入的新式头部文件,便于区分C和C++的库。 11. **类与结构体/联合体**:C++中的结构体和类非常相似,但默认访问权限不同,结构体成员是...

    C++ 中 Windows 编程概述

    然而,对于新项目,微软推荐使用更现代的C++/WinRT,这是一种完全基于C++17标准的接口,提供与Windows运行时交互的方法。 至于通用Windows平台(UWP),它是Windows 10及以后版本的新式API,支持跨设备的XAML用户界面...

    c++大纲资料.txt

    C++11/14/17标准引入了大量新特性,包括自动类型推导(auto)、Lambda表达式、基于范围的for循环、右值引用与移动语义以及线程库与新式同步原语等。这些新特性极大提高了C++的表达能力和开发效率。 以上便是《C++...

    more effective c++

    在C++中,存在多种类型转换方式,包括旧式C风格的转换(如`(int)`)和新式C++风格的转换(如`static_cast()`)。C++风格的转换提供了更好的类型安全性和可读性,有助于减少错误的发生。因此,在编写代码时,应优先...

    Thinking in C++(第二版 英文版)

    - **头文件更新**:采用新式的头文件包含方式,使得代码更符合现代C++的标准。 #### 结论 《Thinking in C++》是一本非常有价值的书籍,不仅适合C++初学者作为入门教材,也适合有经验的开发者作为参考手册。通过...

    遍历读取文件夹内所有类型的图像

    C++标准库并不直接提供遍历目录的功能,但可以通过第三方库如Boost或者C++17引入的新式文件系统库来实现。在这个案例中,开发者可能使用了迭代器遍历指定目录下的所有文件。 `FileRead.cpp`和`FileRead.h`是C++项目...

    windows vc++库

    **VC++2010**(Visual C++ 2010或Microsoft Visual C++ 10.0)引入了对C++11标准的初步支持,包括新式初始化、自动类型推断(auto关键字)、lambda表达式、右值引用等关键特性。这个版本还提供了并行计算库,如PPL...

Global site tag (gtag.js) - Google Analytics