复用与继承
复合也就是 has-a;
继承就是is-a;
比如:人有一个名字,人也有家庭住址(has-a),但是你不能说人是一个名字,人是一个家庭住址;
再比如:学生类继承自人类(is-a),学生也是人;如果A类pubilc继承于B类,那么A类对象一定是个B类对象,反之不一定成立;
假如有CPerson类,CStudent类,CTeam类;
CStudent类继承自CPerson类,CTeam类中复合;额CStudent类
构造顺序是:
CPerson->CStudent->CTeam;
析构顺序是:
CTeam->CStudent->CPerson;
代码段如下:
test.h:
#include <iostream>
#ifndef TEST_H
#define TEST_H
class CPerson
{
public:
CPerson();
~CPerson();
private:
};
class CStudent:public CPerson
{
public:
CStudent();
~CStudent();
private:
};
class CTeam
{
public:
CStudent stu;
CTeam();
~CTeam();
private:
};
#endif
test.cpp:
#include "test.h"
CPerson::CPerson()
{
std::cout << "CPerson Construction!" << std::endl;
}
CPerson::~CPerson()
{
std::cout << "CPerson Destruction!" << std::endl;
}
CStudent::CStudent()
{
std::cout << "CStudent Construction!" << std::endl;
}
CStudent::~CStudent()
{
std::cout << "CStudent Destruction!" << std::endl;
}
CTeam::CTeam()
{
std::cout << "CTeam Construction!" << std::endl;
}
CTeam::~CTeam()
{
std::cout << "CTeam Dstruction!" << std::endl;
}
main.cpp:
#include "test.h"
int main()
{
CTeam team;
return 0;
}