Skip to content

关于本章

本章对C++的type conversion进行总结。

cppreference Conversions expression

cppreference中,将type conversion放到了Expressions章节中。

conversion 说明
standard conversions implicit(隐式) conversions from one type to another
const_cast conversion
static_cast conversion
dynamic_cast conversion
reinterpret_cast conversion
explicit cast conversion using C-style cast notation and functional notation
user-defined conversion makes it possible to specify conversion from user-defined classes

分类

C++ 的type system提供了非常丰富的type conversion支持,下面是简单的分类,通过这些分类,能够帮助我们全面地理解type conversion。

根据implicit/explicit进行分类

转换方式是

implicit/explicit 细分 说明
explicit cast - static_cast
- const_cast
- dynamic_cast
- reinterpret_cast
- C-style cast
参见:
- C++\Language-reference\Basic-concept\Type-system\Type-conversion\User-defined-conversion
implicit conversion 参见 :
- C++\Language-reference\Basic-concept\Type-system\Type-conversion\Implicit-conversion

根据built-in/user-defined进行分类

built-in/user-defined 细分 说明
user defined conversion - user-defined conversion function
- Converting constructor
既可以用于explicit cast,也可以用于implicit conversion
built-in 基本上是implicit conversions中的一些conversion

Type conversion and overload resolution

阅读overload resolution可知,其中的涉及了非常多的type conversion内容:它是基于type conversion来进行ordering的。并且通过overload resolution的学习,可以进一步地深入对type conversion的认知。overload resolution在C++\Language-reference\Functions\Overload-resolution章节中描述的。

非常建议阅读accu Overload Resolution - Selecting the Function,它对两者总结得非常好。