14. 对象组合

OOP特性:封装、继承和多态性.

继承:代码的重用.

代码重用:继承/组合

组合:
用已有的对象组合出新的对象. eg: 有了engine对象,有了tyre对象,则可以组合成car对象. 用对象制造对象.

class Person {...};
class Currency {...};
class SavingsAccount
{
   public:
     SavingsAccount(const char* name, const char* address, int cents);
     ~SavingsAccount();
     void print();
   private:
     Person m_saver; //对象, 对象组合
     Currency m_balance; //对象,组向组合
};

//构造函数
SavingsAccount::SavingsAccount(const char* name, const char* address, int cents):m_saver(name,address),m_balance(0,cents) 
//初始化列表,先初始化再构造函数. 1.初始化name address cents 2.调用有参数构造函数
//如果不这么写,则会1.初始化 2. 调用无参数构造 3.赋值 4.调用有参数构造函数
{
}

void SavingsAccount::print()
{
  m_saver.print();
  m_balance.print();
}

Public vs Private

class SavingsAccount
{
  public:
    Person m_saver;
    ....
};
如果Person类成员函数set_name,则可以使用
SavingsAccount.m_saver.set_name();
//但是不建议这样做,因为成员变量无法受到保护. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值