Item 9 避免在ctor和dtor中调用虚函数

看下面的程序有什么问题。

在基类的构造过程中,虚函数调用不会被传递到派生类中。因为基类的ctor是在派生类之前执行的,这时其数据成员还没有被初始化,即,派生对象还不存在!所以C++拒绝这样做。
不止虚函数,使用到RTTI的部分(dynamic_cast和typeid),在基类的ctor里,都不会被解析成派生类。
ctor和dtor同样。
一些编译器会对此给出警告。

● 注意,还有一种隐藏版本:

● 如果非要在基类里实现这样的功能,怎么办?下面是一种办法。

你可能感兴趣的:(C++,c,C#)