gpt4 book ai didi

c++ - 显式类型转换的要求

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:48 26 4
gpt4 key购买 nike

对于static_cast,是不是除非有内置的类型转换函数,否则不能使用static_cast进行转换。但是你可以为一个类型做一个reinterpret_cast,考虑到返回类型是有效的。

int main()
{
WORD word;
HWND hwnd = static_cast<HWND>(word); // error
HWND hwnd = reinterpret_cast<HWND>(word); // ok, considering a valid handle is returned.
}

与 reinterpret_cast 不同,使用 static_cast 完成的显式类型转换是否需要转换函数?

最佳答案

reinterpret_cast 只允许您转换完全不相关的类型。它只是将内存块视为另一种类型。所以使用它是非常不安全的,因为它不会给你任何编译或运行时错误,只会导致(通常)崩溃

static_cast 提供对强制转换有效性的编译时检查。如果一种类型不能被视为另一种类型,则 static_cast 会在您尝试强制转换时给出编译时错误。它在类型之间进行隐式转换(例如 int 到 float,或指向 void* 的指针),它还可以调用显式转换函数(或隐式转换函数)。

所以你可以说它可以进行隐式转换,其中存在隐式转换内置函数。如果混淆,它通常被认为是 c 风格转换的替代品。

关于c++ - 显式类型转换的要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7246414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com