| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 907 人关注过本帖, 1 人收藏
标题:构造和析构时为什么不能调用virtual函数?
只看楼主 加入收藏
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏(1)
 问题点数:0 回复次数:4 
构造和析构时为什么不能调用virtual函数?
构造和析构时为什么不能调用virtual函数?
谢谢了
搜索更多相关主题的帖子: virtual 函数 构造 
2008-04-25 13:15
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你说的是析构函数不能是virtual?如果是这个,析构函数可以是虚函数

学习需要安静。。海盗要重新来过。。
2008-04-25 13:36
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
在构造和析构函数内调用virtual函数却会得到本地版本...
对于构造函数来说,对象的vptr指针设置要在最晚辈派生类中才能完全设置正确...因为从继承树可以知道,每个祖先类都会设置vptr以指向该类的子对象.
总的来说,原因是vptr没完成初始化.
对于析构函数来说,是因为派生类对象先被释放,所以virtual的调用可能会触及已释放的部分,所以不安全也不合法..

樱花大战,  有爱.
2008-04-25 13:54
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
恩,同意楼上...不安全到是真的...语法上是可以的...多态提到是可以用的

学习需要安静。。海盗要重新来过。。
2008-04-25 14:01
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
谢谢楼上两位的回答
构造函数 还不是很清楚 为什么
2008-04-25 18:37
快速回复:构造和析构时为什么不能调用virtual函数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075318 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved