首页 > 解决方案 > (C++) 这3种类型转换方法有什么区别?

问题描述

当我在 char 类型变量上使用它时,以下任何一种方法都会给我相同的值。那么它们之间有什么区别呢?

标签: c++castingtype-conversion

解决方案


对于使用 eth 功能转换符号的初学者,需要一个简单的类型说明符。

那就是你可能不会写

unsigned int( c )

转换的功能符号创建一个临时对象。

在使用显式类型转换时,您可以创建例如左值引用。

这是一个演示程序。

#include <iostream>

int main()
{
    char c = 'A';

    ++( char &)c;

    std::cout << "c = " << c << '\n';
}

来自 C++ 标准(5.2.3 显式类型转换(函数表示法)

3 类似地,一个 simple-type-specifier 或 typename-specifier 后跟一个 braced-init-list 使用指定的 braced-init-list 创建一个指定类型 direct-list-initialized (8.5.4) 的临时对象,并且它的value 是作为prvalue的临时对象。

至于static_cast那么符合 C++ 标准(5.2.9 静态转换)

1 表达式 static_cast(v) 的结果是将表达式 v 转换为类型 T 的结果。如果 T 是左值引用类型或函数类型的右值引用,则结果是左值;如果 T 是对对象类型的右值引用,则结果是 xvalue;否则,结果为纯右值。static_cast 运算符不应抛弃常量


推荐阅读