[C++] 在构造函数中调用虚函数会怎么样?

陪她去流浪 桃子 2017年02月13日 编辑 阅读次数:2178

在构造函数中调用虚函数会怎么样?很危险!并且应该避免。

C++ FAQ Lite中的解释:

你可以在构造函数中调用虚函数,但是要小心!因为对象的构造是从基类开始构造,然后才是派生类。所以,如果调用的是继承类的虚函数的话,此虚函数将访问一个未被完全构造的对象。因此:C++语言直接禁用掉了该特性。所有的 C++ 实现都必须只调用当前构造函数所在的类的虚函数版本。

原因浅显易懂。

参考:c++ - Calling virtual functions inside constructors - Stack OverflowInheritance — What your mother never told you, C++ FAQ

标签:C++