#include #include #include using namespace std; class Animal { protected: string name; float price; public: Animal(const string &name, float price) { this->name = name; this->price = price; } virtual void buy(); // 类内声明的虚函数 }; // 类外实现类中的虚函数 void Animal::buy() { cout << "小宠物 " << name << " 卖了 " << price << endl; } class Dog : public Animal { private: int age; public: Dog(string name, float price, int age) : Animal(name, price), age(age) { } virtual void buy() // 重写父类的虚函数 { cout << age << " 岁小狗 " << name << " 卖了 " << price << endl; } void eat() // 扩展的新功能 { cout << name << " 喝酒" << endl; } }; class Cat : public Animal { private: int age; public: Cat(string name, float price) : Animal(name, price) { } virtual void buy() // 重写父类的虚函数 { cout << "小猫 " << name << " 卖了 " << price << endl; } void eat() // 扩展的新功能 { cout << name << " 吃鱼" << endl; } }; class AnimalShop { public: // 多态应用之一 void buy(Animal *animal) { cout << "-----动物之家正在出售小宠物-----" << endl; animal->buy(); cout << "-----出售结束-----" << endl; delete animal; // 释放堆区空间 } }; int main() { AnimalShop shop; Dog dog("旺财", 1000, 3); // 多态的应用 shop.buy(&dog); shop.buy(new Cat("小花", 500)); return 0; }