Effective C++ 第九条Never call virtual functions during constructio
Never call virtual functions during construction or destruction.绝不在构造和析构过程中调用virtual函数
在构造函数中调用pure函数

以上程序无法正常执行,先搞清楚程序执行的顺序,Derived创建之前要先创建Base,也就是说先执行Base的构造函数的时候需要执行 op 函数,但是此时还没有进入Derived,op 函数只是一个 pure 函数,没有实际代码,也就是无法执行。
在构造函数中使用impure函数

在构造函数中使用了impure函数确实不会造成错误,但是结果与设计相异,我们在Deerived中设计op 函数输出的事 “Hello Derived”,但是输出的结果却是 “Hello Base”。因为Derived构造函数实现之前要先实现Base的构造函数,此时Base调用的是属于Base中的op 函数而非Derived中的构造函数,从而造成与设计不符合。
解决办法
将 op 设计成 non-pure 函数,通过给Derived传入制定参数来实现目的。

这里不使用virtual函数,也实现了同样的功能.