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

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

C++ FAQ Lite中的解释:

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

原因浅显易懂。

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

发表于:2017年02月13日 ,阅读量:592 ,标签:C++

版权声明:若非特别注明,本站所有文章均为作者原创,转载请务必注明原文地址。