我有两个类,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/