`
codepeak
  • 浏览: 31952 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

构造函数和析构函数

阅读更多

-- 析构函数可以为virtual类型,而构造函数则不能。构造函数为什么不能为virtual类型呢?

虚函数采用一种虚调用的办法。虚调用是一种可以在只有部分信息的情况下工作的机制,特别允许我们调用一个只知道接口而不知道其准确对象类型的函数。但是如果要创建一个对象,就必须要知道对象的准确类型,因此构造函数不能为虚函数。

 

-- 如果虚函数是非常有效的,我们是否可以把每个函数都声明为虚函数?

不行,这是因为虚函数是有代价的:由于每个虚函数的对象都必须维护一个v表,因此在使用虚函数的时候都会产生一个系统开销。如果仅是一个很小的类,且不想派生其他的类,那么根本没有必要使用虚函数。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics