C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++ 组合Composition

C++ 组合 (Composition)的介绍与实例

作者:我是小白呀

这篇文章主要给大家介绍了关于C++ 组合(Composition)的相关资料,组合就是将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。需要的朋友可以参考下

概述

c++中一个重要的特点就是代码的重用,为了代码重用,有两个非常重要的手段,一个是继承,一个是组合

组合 (Composition) 指在一个类中另一类的对象作为数据成员.

案例

在平面上两点连成一条直线, 求直线的长度和直线中点的坐标.

要求:

Dot 类:

#ifndef PROJECT5_DOT_H
#define PROJECT5_DOT_H

#include <iostream>
using namespace std;

class Dot {
public:
    double x, y;
    Dot(double a, double b) : x(a), y(b) {};
    void show() {
        cout << "x: " << x << endl;
        cout << "y: " << y << endl;
    };
};

#endif //PROJECT5_DOT_H

Line 类:

#ifndef PROJECT5_LINE_H
#define PROJECT5_LINE_H

#include "Dot.h"

class Line : public Dot {
private:
    Dot d1;
    Dot d2;
public:
    Line(const Dot &d1, const Dot &d2) : Dot(0, 0), d1(d1), d2(d2) {
        x = (d1.x + d2.x) / 2;
        y = (d1.y + d2.y) / 2;
    }

    void show(){
        Dot::show();
        cout << "dot1: (" << d1.x << ", " << d1.y << ")" << endl;
        cout << "dot2: (" << d2.x << ", " << d2.y << ")" << endl;
    }
};

#endif //PROJECT5_LINE_H

main:

#include <iostream>
#include "Dot.h"
#include "Line.h"
using namespace std;

int main() {
    double a, 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();

    return 0;
}

输出结果:

Input Dot1:
1 2
Input Dot2:
4, 6
x: 2.5
y: 1
dot1: (1, 2)
dot2: (4, 0)

总结

到此这篇关于C++ 组合(Composition)的文章就介绍到这了,更多相关C++ 组合Composition内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文