LALA  
日历
<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

留言簿(1)

随笔分类(31)

文章分类(4)

收藏夹(21)

搜索

  •  

积分与排名

  • 积分 - 29227
  • 排名 - 1403

最新随笔

最新评论

阅读排行榜

 
要点:绝对不应该在构造函数和析构函数中调用虚函数。

Derived Class对象内的Base Class成分会在Derived Class自身成分被构造之前构造完成。如果Base Class构造函数中有虚函数(virtual function),该virtual function绝对不会下降到Derived Class层中,而是直接调用Base Class中该函数,通俗的说,即——在Base Class构造时,virtual function不再被当成virtual function。

这是因为,在Base Class构造期间,对象的类型是Base Class而不是Derived Class。不只是虚函数会被编译器解析至Base Class中,若使用运行期类信息(runtime type information,例如dynamic_cast和typeid),也会把对象视为Base Class类型。同样这也适合于析构函数。一旦由Derived Class的析构函数进入到BaseClass的析构函数后,对象就成为一个BaseClass的对象了。
posted on 2010-07-28 21:37 Dest 阅读(615) 评论(0)  编辑  收藏 所属分类: C++
 
Copyright © Dest Powered by: 博客园 模板提供:沪江博客