一道关于dynamic_cast题目不理解

freenvshen freenvshen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
程序如下:
#include<iostream>
using namespace std;

class A{
public:
A(){}
};

class B:public A{
public:
B(){}
};

void main()
{
A *pb=new B();
B b;

A *pa=dynamic_cast<A *>(pb);
}

在VC6.0中程序编译报错:error C2683: dynamic_cast : 'A' is not a polymorphic type
但是在VS2005中却可以正确编译并执行。
还有一点,如果想使用动态运行类别检查或者类型转换的话,在VC6.0中应该在设置里,把Enable Run Time Information选项选上,想问大家一下,如果在VS中,这个应该在哪里设置,没找到怎么设置,还是说,这个在VS中已经是自动的?
希望懂的大神们不吝赐教,感谢。。。。
...全文

相关推荐

迅雷2010笔试题

迅雷2010年深圳的笔试题目 对参加迅雷笔试的有帮助

sanmaoyun

static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解

1.static_cast对类的指针只能转换有继承关系的类。对普通的指针来说只能在void*和其他指针之间转换。它还可转换简单的类型,比如int到char等。不能提供数字到指针的转换。不能提供不同类型指针之间的转换比如int*到char*。 2.dynamic_cast提供安全的转换如果两个指针不存在继承关系转换会失败返回空指针,如果你提供一个错误的指针那样会发生内存访问异常,因为它会去比较两个类型的虚函数表。虚函数表的指针一般放在对象指针最开始的四字节中,你去访问一个错误的地址这样肯定会发生异常。 3.reinterpret_cast提供数字到指针间的转换比如void*到int。提供不同类型

weixin_38663701

static_cast,dynamic_cast,reinterpret_cast和const_cast的区别详解

C-style cast举例: int i; double d; i = (int) d;上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-style类型转换。下面是一个简单的程序: 代码如下:#include using namespace std;int main(void){         int i;         double d = 11.29;         i = (int)d;         cout &lt;&lt; i &lt;&lt; endl;         co

weixin_38717843

C++中的类型转换static_cast、dynamic_cast、const_cast和reinterpret_cast总结

主要介绍了C++中的类型转换static_cast、dynamic_cast、const_cast和reinterpret_cast总结,需要的朋友可以参考下

weixin_38629976

标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast

标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast

蓝天客
评论 6
收藏 已收藏
分享
返回顶部
freenvshen
C++ 语言 65,214 成员 250,514 内容