dynamic_cast强制转换为指向不在层次结构中的类的指针
dynamic_cast casting to pointer to class not in hierarchy
我正在处理项目,在做dynamic_cast时我错误地输入了不同的类名,它的工作没有抛出任何异常,并且在不同的模块中发生了问题。简而言之,我们有一个类层次结构,其中 B 类派生自基类 A,并且两者都具有虚函数。有具有虚函数的单独基类 C。现在,在指向 C 的指针上执行dynamic_cast时,我错误地键入了 A,如下面的代码所示,它起作用了。
我的问题是为什么dynamic_cast现在在这种情况下抛出异常,因为它应该抛出异常,因为我试图将输入指针投射到完全不同的类指针。我在这里也运行了它 http://ideone.com/Fpb3t1 也没有抛出任何例外。
#include <iostream>
using namespace std;
class A
{
public:
virtual void method() {;}
};
class B : public A
{
};
class C
{
public:
virtual void no(int arg) {;}
};
int main()
{
C obj;
A* ptr = NULL;
try
{
C *cptr = &obj;
ptr = dynamic_cast<A*> (cptr);
}
catch (...)
{
std::cout << std::endl << "NO EXCEPTION" << std::endl;
}
return 0;
}
谢谢
指针
上的失败dynamic_cast
返回nullptr
,它不会抛出。有关更多详细信息,请参阅此处。
相关文章:
- 如何在 C# 中映射双 C 结构指针?
- 如何重构类层次结构以避免菱形问题
- C++:映射结构中的结构指针
- C++ 中模板化类型的类层次结构
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- 为什么不同类型层次结构的指针之间的dynamic_cast定义得很好?
- 继承层次结构并将元素添加到向量
- C++ 类层次结构中的"对齐"是什么意思?
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 确定大层次结构中基本指针的实际类型,无需dynamic_cast
- 在访问类的树层次结构中的对象时避免使用 null 指针
- dynamic_cast强制转换为指向不在层次结构中的类的指针
- 具有向下强制转换函数指针的类层次结构
- 对象层次结构员工程序 - 取消引用 cout 的指针
- 指向类层次结构的派生部分的指针
- 通过指针在 gdb/Eclipse CDT 调试监视中显示真实的对象层次结构
- 具有指向自身指针的类层次结构
- 指向层次结构中类的指针相等
- c++:指针数据成员在类继承层次结构中的行为
- c++指针和类层次结构导致段错误难题