# include <iostream>
# include <vector>
using namespace std;
class Animal
{
public:
virtual void eat() const { cout << "I eat like a generic Animal." << endl; }
virtual ~Animal() {}
};
class Wolf : public Animal
{
public:
void eat() const { cout << "I eat like a wolf!" << endl; }
};
class Fish : public Animal
{
public:
void eat() const { cout << "I eat like a fish!" << endl; }
};
class GoldFish : public Fish
{
public:
void eat() const { cout << "I eat like a goldfish!" << endl; }
};
class OtherAnimal : public Animal
{
};
int main()
{
std::vector<Animal*> animals;
animals.push_back( new Animal() );
animals.push_back( new Wolf() );
animals.push_back( new Fish() );
animals.push_back( new GoldFish() );
animals.push_back( new OtherAnimal() );
for(auto it = animals.begin(); it != animals.end(); ++it) {
(*it)->eat();
delete *it;
}
return 0;
}
#include <iostream>
using namespace std;
class Account {
public:
Account( double d ) {
_balance = d;
}
virtual double GetBalance() {
return _balance;
}
virtual void PrintBalance() {
cerr << "Error. Balance not available for base type." << endl;
}
private:
double _balance;
};
class CheckingAccount : public Account {
public:
CheckingAccount(double d) : Account(d) {}
void PrintBalance() {
cout << "Checking account balance: " << GetBalance() << endl;
}
};
class SavingsAccount : public Account {
public:
SavingsAccount(double d) : Account(d) {}
void PrintBalance() {
cout << "Savings account balance: " << GetBalance() << endl;
}
};
int main() {
CheckingAccount *pChecking = new CheckingAccount( 100.00 ) ;
SavingsAccount *pSavings = new SavingsAccount( 1000.00 );
Account *pAccount = pChecking;
pAccount->PrintBalance();
pAccount = pSavings;
pAccount->PrintBalance();
}
近期评论