我在DLL内部声明基类和派生类(不输出),都声明析构函数为虚函数,为啥析构时出错啊?

jmcooler 2006-07-13 02:44:48
我在DLL内部声明基类和派生类,两个类仅仅用于DLL内部,不输出。
基类和派生类都声明析构函数为虚函数,为啥析构时出错啊?
...全文
92 点赞 收藏 5
写回复
5 条回复
jmcooler 2006年07月14日
问题原因已经找到,多谢。
是因为我在构造函数里使用了memset( this, 0 );
它将有关虚函数的向量表给清除了,导致析构时错误。
总结:在有虚函数的类中,构造函数中不能使用memset整个类为0,否则将导致意想不到的错误
回复 点赞
pottichu 2006年07月13日
代码!
回复 点赞
lyclowlevel 2006年07月13日
把具体的代码贴出来。
回复 点赞
healer_kx 2006年07月13日
你是如何让它们析构的啊? 就是说在什么地方delete的? 又是什么地方new的?
回复 点赞
jmcooler 2006年07月13日
我把virtual去掉,就没问题
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告