【09】绝不在构造和析构过程中调用virtual方法

1、绝不在构造和析构过程中调用virtual方法,为啥?

  原因很简单,对于前者,这种情况下,子类专有成分还没有构造,对于后者,子类专有成分已经销毁,因此调用的并不是子类重写的方法,这不是程序员所期望的。

2、在构造方法和析构方法中,直接调用virtual方法,很容易识别。还有一种情况要注意,那就是间接调用。比如:构造方法调用init方法,而init方法调用virtual方法。

3、在构造过程中,不能使用virtual从上到下调用,哪有什么办法弥补呢?

  可以将子类必要的信息向上传递给父类构造方法。

【09】绝不在构造和析构过程中调用virtual方法

上一篇:【CodeLab 科技创新营】首次线上直播!独家揭秘支付宝技术人才选择标准


下一篇:superword v1.0 发布,基于 Java8 的英语词汇分析和辅助阅读开源项目