发布时间:2020-09-29 09:00 原文链接: C++之类的继承关系学习总结(一)

一、类的组合关系:

1、整体与部分的关系

组合关系,从字面上来理解的话,就是谁也离不开谁,必须相互组合在一起才行,例如我们生活当中的电脑组成:

代码示例:

#include <iostream>
#include <string>
using namespace std;
class Memory

public:
   Memory()
   {
       cout << "Memory()" << endl;
   }
   ~Memory()
   {
       cout << "~Memory()" << endl;
   }
};
class Disk

public:
   Disk()
   {
       cout << "Disk()" << endl;
   }
   ~Disk()
   {
       cout << "~Disk()" << endl;
   }  
};
class CPU

public:
   CPU()
   {
       cout << "CPU()" << endl;
   }
   ~CPU()
   {
       cout << "~CPU()" << endl;
   }    
};
class MainBoard

public:
   MainBoard()
   {
       cout << "MainBoard()" << endl;
   }
   ~MainBoard()
   {
       cout << "~MainBoard()" << endl;
   }    
};
class Computer // 这个地方不仅描述了事物,也还描述了关系,里面只要有一个类不存在,电脑这个类也就不复存在了。

   Memory mMem;
   Disk mDisk;
   CPU mCPU;
   MainBoard mMainBoard;
public:
   Computer()// 这里会先调用类成员的构造函数,之后调用电脑类的构造函数,这说明了组合关系;电脑类对象的创建,要依赖上述四个类的对象的创建。
   {
       cout << "Computer()" << endl;
   }
   void power()
   {
       cout << "power()" << endl;
   }
   void reset()
   {
       cout << "reset()" << endl;
   }
   ~Computer()// 电脑类析构的时候,也会将对应的类成员析构,这说明同生死;说明了电脑类对象的存在完全依赖于类成员对象的存在。
    {
   {
       cout << "~Computer()" << endl;
   }
};
int main()
{  
   Computer c;
   
   return 0;

运行结果:

root@txp-virtual-machine:/home/txp# ./a.out
Memory()
Disk()
CPU()
MainBoard()
Computer()
~Computer()
~MainBoard()
~CPU()
~Disk()
~Memory()

2、组合关系的特点:

将其它类的对象作为当前类的成员使用

当前类的对象与成员对象的生命周期相同

成员对象在用法上与普通对象完全一致