gpt4 book ai didi

c++ - 你怎么知道你是否可以将一个类型 static_cast 为一个不同的类型?

转载 作者:行者123 更新时间:2023-11-27 23:59:30 24 4
gpt4 key购买 nike

这里引用了维基百科对 static_cast 的描述。

“类型参数必须是可以通过已知方法将对象转换为的数据类型,无论是内置方法还是强制转换。类型可以是引用或枚举器。所有类型的转换都很好-编译器定义和允许的是使用 static_cast 执行的。”

你是怎么想出这个“已知方法”的?

最佳答案

下面是 static_cast 可以执行的转换列表:

  • 派生类指针(resp.reference)的基类指针(resp.reference)
  • 任何隐式转换
  • 调用显式构造函数或显式转换函数的转换
  • 左值到xvalue
  • 作废的任何类型
  • 介于算术和枚举类型之间,或两种不同的枚举类型
  • 从指向派生类成员的指针,到指向基类成员的指针,前提是指向的类型匹配
  • void*T*,其中 T 是一个对象类型

在第二点和第三点的情况下,可能有多种可能的转换顺序。过载解决方案用于选择最佳解决方案。的确,有时可能并不明显哪一个是最好的,哪个是编译器会选择的(这就是为什么不要过分使用重载构造函数和转换函数是个好主意)。如果重载决策不明确,程序将无法编译。

关于c++ - 你怎么知道你是否可以将一个类型 static_cast 为一个不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40254036/

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