[C++] 在构造函数中调用虚函数会怎么样?
在构造函数中调用虚函数会怎么样?很危险!并且应该避免。
C++ FAQ Lite中的解释:
你可以在构造函数中调用虚函数,但是要小心!因为对象的构造是从基类开始构造,然后才是派生类。所以,如果调用的是继承类的虚函数的话,此虚函数将访问一个未被完全构造的对象。因此:C++语言直接禁用掉了该特性。所有的 C++ 实现都必须只调用当前构造函数所在的类的虚函数版本。
原因浅显易懂。
参考:c++ - Calling virtual functions inside constructors - Stack Overflow、Inheritance — What your mother never told you, C++ FAQ。