C++确实reinterpret_cast总是返回结果?

mik*_*yko 4 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));
  };
};
Run Code Online (Sandbox Code Playgroud)

所以既然你知道我如何调用"def",我想知道reinterpret_cast是否实际上返回了一个类型B的指针作为参数发送到def.我将不胜感激任何帮助.谢谢

pm1*_*100 5

reinterpret_cast会一直做你说的 - 它是一个雪橇.你可以做

def(reinterpret_cast<B *>(42));
Run Code Online (Sandbox Code Playgroud)

要么

std::string hw = "hello";
def(reinterpret_cast<B *>(hw));
Run Code Online (Sandbox Code Playgroud)

它将始终返回一个指向正确类型的指针.它假设你知道你在做什么