10 2013 档案
摘要:条款9:决不再构造和析构过程中调用virtual函数,包括通过函数间接调用virtual函数。应用:想在一个继承体系中,一个derived class被创建时,某个调用(例如生成相应的日志log)会有相对应的实现。原因: base class的构造函数会先被调用,而在base class 构造期间virtual函数绝不会下降到dedrived class阶层。事实上,C++的其它部分(dynamic_cast & typeid),在此期间也是一样的把对象视为base class。解决办法:籍由”令derived class 将必要的构造信息向上(通过函数参数)传递至base class
阅读全文