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();
//但是不建议这样做,因为成员变量无法受到保护.