似乎ACE并不厌恶多继承,而且大量使用了多继承!
在优良的类设计下,ACE
的多继承并不近亲繁殖,反而可以做到类似切面编程、接口编程、背靠背编程等,实现更丰富的功能!
对于ACE
源码中某些*Base
的实现基类,曾惊讶于它们不提供虚析构函数。
对于C++
编程精通的人员,一下子可能就会意识到,这些类不适合作为基类引用进行编程。
在ACE
类设计中同时还存在大量的虚析构函数,例如, ACE_Allocator
,是否也可以说明这是刻意为之:这特别的*Base
类,不希望你以基类引用的编程来操纵它们!
与用
const
关键词修饰,有异曲同工之妙
虽然在Effective C++
中建议作为基类应该提供虚构函数,但是,我觉得ACE在这里的设计哲学,更具编程规范意义:
- 如果我不想作为基类被操作,那么我不提供虚析构函数
- 如果因此出错,就让它快速地出错、冒出来,并不为了害怕而过度设计
前面的文章说想总结下,ACE
的虚析构函数的设计哲学,我想就在此吧…