C++ 是否 reinterpret_cast 总是返回结果?

标签 c++ reinterpret-cast

我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。 当函数调用另一个函数时,我提供 reinterpret_cast(a) 作为参数。如果这看起来模棱两可,这里有一个代码示例:

void abc(A * a) {
  if (a->IsA("B")) { //please dont worry much about this line,
                     //my real concern is the reinterpret_cast
    def(reinterpret_cast<B *>(a));
  };
};

现在您知道我是如何调用“def”的了,我想知道 reinterpret_cast 是否实际上返回了一个 B 类型的指针,作为 def 的参数发送出去。 我将不胜感激任何帮助。 谢谢

最佳答案

reinterpret_cast 将始终按您说的做 - 它是一把大锤。你可以做

def(reinterpret_cast<B *>(42));

std::string hw = "hello";
def(reinterpret_cast<B *>(hw));

它总是会返回一个可能指向正确类型的指针。它假定您知道自己在做什么

关于C++ 是否 reinterpret_cast 总是返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45044072/

相关文章:

C++11 cin 输入验证

c++ - 标准布局类型和 reinterpret_cast

c++ - 如何更改 SysDateTimePick32 或 CDateTimeCtrl 的背景颜色?

c++ - 使用带有 lambdas/bind 的成员函数实现中间件函数

c++ - 使用自定义模式序列化和使用 Boost 随机访问

c++ - 如何通过 Windows API 关闭电脑?

C++ reinterpret_cast 安全与数组引用和移动/复制赋值

c++ - 将一个指向成员函数的指针转换为同一类的另一个指针

C++:reinterpret_cast 是这些场景中的最佳选择吗?

c++ - 通过引用(从 `signed` 到 `unsigned` )与 `reinterpret_cast` 进行类型别名有何作用?