关于本章
本章对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,它对两者总结得非常好。