构造函数为什么不能为虚函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数为什么不能为虚函数相关的知识,希望对你有一定的参考价值。

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

 

  虚函数既然那么有用,我们是否可以把每个函数都声明为虚函数?

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

以上是关于构造函数为什么不能为虚函数的主要内容,如果未能解决你的问题,请参考以下文章

构造函数为什么不能为虚函数

C++类的构造函数不能为虚函数的原因

C++的构造函数为何不能为虚函数

构造函数和析构函数可以是虚函数吗

构造函数和析构函数可以是虚函数吗

C++ 构造函数不能是虚函数,基类析构函数应该为虚函数