Inheritance: A Mechanism For Specialization A Mechanism For Reuse Fundamental To Supporting Polymorphism
Inheritance: A Mechanism For Specialization A Mechanism For Reuse Fundamental To Supporting Polymorphism
68
BankAccount
class Account
{
protected:
double fBalance;
public:
Account( double aBalance );
};
};
void addInterest();
void chargeFee( double aAmount );
69
70
71
72
73
Virtual Destructors
delete Aptr;
74
class Account
{
public:
virtual ~Account() { }
};
75
76
};
77
};
never use ==
base call
78
81
class Account
{
public:
virtual double estimateReturn() = 0;
};
82
Interface TicTacToeView
class TicTacToeView
{
public:
virtual ~TicTacToeView() {}; // empty required destructor
virtual
virtual
virtual
virtual
void
void
void
void
};
84
public:
protected:
private:
Multiple Inheritance
86
CheckingAccount
class Account
{ };
class BackAccount : public Account
{ };
class WireAccount : public Account
{ };
class CheckingAccount : public BackAccount,
public WireAccount
{ };
87
Diamond Problem
class Account
fBalance
fBalance
class BankAccount
class WireAccount
BankAccount::fBalance
WireAccount::fBalance
class CheckingAccount
CheckingAccount inherits
Account twice!
88
fBalance
class BankAccount
class WireAccount
(Account::)fBalance
(Account::)fBalance
class CheckingAccount
fBalance
91