组合(非继承关系):电脑(由鼠标、键盘等组成),而不是电脑继承鼠标,继承键盘
# include <iostream>
using namespace std;
//组成部分而非继承,电脑将每一个部分组合起来并具有每一部分的功能
class Keyboard
{
public:
void input();
};
class Mouse
{
public:
void click();
};
void Keyboard::input()
{
cout<<"keyboard_input"<<endl;
}
void Mouse::click()
{
cout<<"mouse_click"<<endl;
}
class Computer
{
//电脑是由鼠标、键盘组成而成,用组合。而不是多继承,它们这里不使用继承关系
public:
Computer(Keyboard* key, Mouse* mo)
: mkey(key), mmo(mo)
{
}
void input()
{
mkey->input();
}
void click()
{
mmo->click();
}
protected:
Keyboard* mkey;
Mouse* mmo;
};
int main()
{
Mouse a;
Keyboard b;
Computer cc(&b, &a);
cc.click();
return 0;
}