标题:构造和析构时为什么不能调用virtual函数?
只看楼主
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
 问题点数: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-211011-1-1.html




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

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