条款九:绝不在构造函数和析构函数中调用virtual函数
本条款开始前我要先阐述重点:你不该在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来你预想的结果,就算有你也不会高兴。如果你同时也是一位Java或C#程序员,请更加注意本条款,因为这是C++与它们不相同的一个地方。
假设你有个class继承体系,用来塑模股市交易如买进、卖出的订单等等。这样的交易一定要经过审计,所以每当创建一个交易对象,在审计日志(audit log)中也需要创建一笔适当记录。下面是一个看起来颇为合理的做法: