感觉在面试中,总是被问及转换类型问题,所以在大面试来临之前,复习一下,其实之前也没有怎么区分,因为实际中,特别是编一个小程序,我不是经常在用。
以下是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/
如果您想转载本博客,请注明出处
如果您对本文有意见或者建议,欢迎留言
分享到:
相关推荐
6. **智能指针(Smart Pointers)**:C++11标准库提供了三种智能指针:`std::unique_ptr`、`std::shared_ptr`和`std::weak_ptr`,它们自动管理内存,避免了传统的指针可能导致的内存泄漏问题。 7. **多线程支持(std::...
在IT行业中,C++是一种强大的编程语言,常用于开发高性能的应用程序。当涉及到与Excel文件交互时,C++可以通过各种库来实现对Excel文件的读取和写入操作。本篇将详细介绍如何在C++中处理Excel文件,以及转换为文本...
10. **新式初始化(List Initialization)**:使用`std::initializer_list`进行初始化,防止了隐式类型转换引发的问题,提高了代码安全性。 11. **变长参数模板(Variadic Templates)**:允许模板接受任意数量的...
6. **新式类型转换运算符**: - C++引入了新的类型转换运算符,如 `static_cast<>`、`dynamic_cast<>`、`const_cast<>` 和 `reinterpret_cast<>`。这些运算符旨在提供更安全、更清晰的类型转换方式。由于它们是C++...
10. **文件包含**:C++中的标准库头文件如`iostream`不使用`.h`后缀,这是C++引入的新式头部文件,便于区分C和C++的库。 11. **类与结构体/联合体**:C++中的结构体和类非常相似,但默认访问权限不同,结构体成员是...
然而,对于新项目,微软推荐使用更现代的C++/WinRT,这是一种完全基于C++17标准的接口,提供与Windows运行时交互的方法。 至于通用Windows平台(UWP),它是Windows 10及以后版本的新式API,支持跨设备的XAML用户界面...
C++11/14/17标准引入了大量新特性,包括自动类型推导(auto)、Lambda表达式、基于范围的for循环、右值引用与移动语义以及线程库与新式同步原语等。这些新特性极大提高了C++的表达能力和开发效率。 以上便是《C++...
在C++中,存在多种类型转换方式,包括旧式C风格的转换(如`(int)`)和新式C++风格的转换(如`static_cast()`)。C++风格的转换提供了更好的类型安全性和可读性,有助于减少错误的发生。因此,在编写代码时,应优先...
- **头文件更新**:采用新式的头文件包含方式,使得代码更符合现代C++的标准。 #### 结论 《Thinking in C++》是一本非常有价值的书籍,不仅适合C++初学者作为入门教材,也适合有经验的开发者作为参考手册。通过...
C++标准库并不直接提供遍历目录的功能,但可以通过第三方库如Boost或者C++17引入的新式文件系统库来实现。在这个案例中,开发者可能使用了迭代器遍历指定目录下的所有文件。 `FileRead.cpp`和`FileRead.h`是C++项目...
**VC++2010**(Visual C++ 2010或Microsoft Visual C++ 10.0)引入了对C++11标准的初步支持,包括新式初始化、自动类型推断(auto关键字)、lambda表达式、右值引用等关键特性。这个版本还提供了并行计算库,如PPL...