注册 登录
编程论坛 C++教室

构造和析构时为什么不能调用virtual函数?

newyj 发布于 2008-04-25 13:15, 917 次点击
构造和析构时为什么不能调用virtual函数?
谢谢了
4 回复
#2
sunkaidong2008-04-25 13:36
你说的是析构函数不能是virtual?如果是这个,析构函数可以是虚函数
#3
中学者2008-04-25 13:54
在构造和析构函数内调用virtual函数却会得到本地版本...
对于构造函数来说,对象的vptr指针设置要在最晚辈派生类中才能完全设置正确...因为从继承树可以知道,每个祖先类都会设置vptr以指向该类的子对象.
总的来说,原因是vptr没完成初始化.
对于析构函数来说,是因为派生类对象先被释放,所以virtual的调用可能会触及已释放的部分,所以不安全也不合法..
#4
sunkaidong2008-04-25 14:01
恩,同意楼上...不安全到是真的...语法上是可以的...多态提到是可以用的
#5
newyj2008-04-25 18:37
谢谢楼上两位的回答
构造函数 还不是很清楚 为什么
1