C++继承体系

来源:互联网 发布:青岛seo搜索排名优化 编辑:程序博客网 时间:2024/05/17 21:39

一个继承体系的根数目,深度和扇出数是否合适,要取决于这个体系要模拟的领域和这个领域所需要的特性,继承体系就好比一个有向图。
1、根节点:某个类如果没有基类,既不是任何类的子类,那么在有向图中就是根节点。
2、类深度:从根节点到该类最长的可能派生路径中,所有经过类的数目,也就是说继承的深度,有多少层的继承。
3、类的扇出:在给定的继承系统中,从这个类直接派生的类的数目,即该类的直接子类的数目。

派生的利弊

派生也就是继承可以提高代码的阅读性,同时增加代码的效率,使得代码更加的抽象。但也同时带来了另外些不足,接口体系总会带来许多虚派生和虚函数,程序的效率上会有所下降。
工厂设计模式就是接口设计类的一种体现,设计好各个模板,用户需要什么再进行细节化。

句柄类

句柄的方式也是常用的方式,所谓的句柄就是,不是通过继承的方式,而是通过在类里面实例化一个指针对象。句柄一般是非接口类!

模板和继承

模板和继承是C++的两个强大特性,对于类体系的设计究竟应该基于模板还是基于继承这个问题,C++程序员却常常使感到疑惑,甚至混淆不清,模板和继承设计出来的结果有时候却很大。
例如对于stack模板设计,基于模板主要是类型不同。而基于抽象基类的派生设计存在比较多不足,在这一点上基于模板的设计更加简洁直接,没有缺陷。事实上继承是存在很多弊端的,会使得代码的效率低下。

总结

虽然直接编写或者是继承体系是最容易实现的类型,又是最高效率。但是接口体系,对象工厂和句柄体系都会利于程序库版本之间的链接兼容性。
能够使用模板的时候就尽量选择模板,防止不理智的使用继承。