构造函数与析构函数中不调用虚函数
本文参考《effective C++》第九条款 在C++中,提倡不能在构造函数和析构函数中调用虚函数。 这是为什么呢? 首先,我们先回顾一下C++虚函数的作用。 虚函数的引入是c++运行时多态的体现,通过调用虚函数可以在运行程序时实现动态绑定,体现了面向对象编程多态的思想。 那为何提倡不能在构造函数与析构函数中不能调用虚函数。接下来我们通过代码分析在构造函数或者虚构函数中调用虚函数是否可行。 假设我们有两种商品A, B。 我们要记录着两种商品的销售记录,每当销售一种商品时,我们就要记录下来。 class item { public: item(); virtual void saleRecord() const= 0 ; //销售记录,纯虚函数 ... }; item::item() { ... virtual void saleRecord(); ... } class itemA : public item { public: itemA(); virtual void saleRecord(); ... }; class itemB : public item { public: itemB(); virtual void saleRecord(); ... }; 我们执行如下代码: itemB b; 一个derived class B 对象会被创建,