C/C++中组合详解及其作用介绍
组合 (Composition) 指在一个类中另一类的对象作为数据成员.案例在平面上两点连成一条直线, 求直线的长度和直线中点的坐标.要求:基类: Dot派生类: Line (同时组合)派生类 Line 从基类 Dot 继承的 Dot 数据, 存放直线的中点坐标Line 类再增加两个 Dot 对象, 分别存放两个端点的坐标Dot 类:1234567891011121314151617#ifndef PROJECT5_DOT_H#define PROJECT5_DOT_H#include iostreamusingnamespacestd;classDot {public:doublex, y;Dot(doublea,doubleb) : x(a), y(b) {};voidshow() {cout x: x endl;cout y: y endl;};};#endif //PROJECT5_DOT_HLine 类:1234567891011121314151617181920212223#ifndef PROJECT5_LINE_H#define PROJECT5_LINE_H#include Dot.hclassLine :publicDot {private:Dot d1;Dot d2;public:Line(constDot d1,constDot d2) : Dot(0, 0), d1(d1), d2(d2) {x (d1.x d2.x) / 2;y (d1.y d2.y) / 2;}voidshow(){Dot::show();cout dot1: ( d1.x , d1.y ) endl;cout dot2: ( d2.x , d2.y ) endl;}};#endif //PROJECT5_LINE_Hmain:123456789101112131415161718#include iostream#include Dot.h#include Line.husingnamespacestd;intmain() {doublea, b;cout Input Dot1: \n;cin a b;Dot dot1(a,b);cout Input Dot2: \n;cin a b ;Dot dot2(a,b);Line l1(dot1, dot2);l1.show();return0;}输出结果:Input Dot1:1 2Input Dot2:4, 6x: 2.5y: 1dot1: (1, 2)dot2: (4, 0)总结类的组合和继承都是重用的重要方式, 可以有效地利用已有类的资源继承是纵向的, 组合是横向的. 通过继承, 我们从基类得到了数据成员. 通过组合, 从别的类得到了成员, 有效地组织和利用现有的类, 减少工作量如果类 A 和类 B 毫不相关, 不可以为了使 B 的功能更多些而让 B 继承 A 的功能如果类 B 有必要使用类 A 的功能. 当 B 是 A 的一种的时候我们使用继承, 当 B 是 A 的一部分时, 我们使用组合
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2568062.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!