c++ - 如何在运行时为虚函数获取指针的确切类型?

标签 c++ pointers inheritance

我正在使用 C++ 虚函数。我有一个基类 treeNode 和两个派生类 splitNode 和 leafNode。 splitNodes 中的一些指针指向其他节点,这些节点可能是 splitNode 或 leafNode。在运行时,我如何检查指针是否指向叶节点或拆分节点,而不更改节点的结构(即,我不想向它们添加任何新函数)。

问候

最佳答案

不清楚您为什么要这样做,但您可以使用 dynamic_cast:

treeNode* theNode = ....;
splitNode sNode* = dynamic_cast<splitNode*>(theNode);
bool isSplitNode = sNode != nullptr;

或者只是

bool isSplitNode = dynamic_cast<splitNode*>(theNode);

如果正确使用多态性,则不必执行此操作。

关于c++ - 如何在运行时为虚函数获取指针的确切类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19096706/

相关文章:

c++ - 如何在我的项目中包含常量

c++:复制ctor和指针

c++ - 有没有办法为任何指针类型定义转换运算符?

Python 默认继承?

c++ - 从 C++ 设置变量时 QML 内存泄漏

c++ - 如何检查显示器是否启用了纵横比自动调整

c++ - 是否有任何 API 可以在 Windows 中获取路径 "C:\Documents and Settings"?

C++ - 通过指针表示所有权

c++ - 有没有一种方法可以使用派生类访问基类中的值?

c++ - 在哪些情况下我们需要保护继承?