2011知识点 - 构造函数可以为虚函数吗

2011知识点 - 构造函数可以为虚函数吗

答案是:不可以
原因:
概念上, 虚函数的意图是动态绑定,程序会根据对象的动态类型来选择要调用的方法。然而在构造函数运行的时候,这个对象的动态类型还不完整(可以是基类,也可以是子类),没有办法确定它到底是什么类型,故构造函数不能动态绑定。

实现上,vptr是构造函数设置的。通过vptr才能找到虚函数。
如果构造函数为虚函数,通过构造函数设置的vptr才能找到构造函数,然后调用它设置vptr,这是不可能实现的。 



参考:
http://bbs.seu.edu.cn/wForum/disparticle.php?boardName=C_CPlusPlus&ID=17648
http://www.cppblog.com/guevara/articles/77360.html

你可能感兴趣的:(2011知识点 - 构造函数可以为虚函数吗)