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( std::vector<Animal*>::const_iterator it = animals.begin(); it != animals.end(); ++it) { (*it)->eat(); delete *it; } return 0; }
以下是虚函数 Animal::eat() 的输出:
1 2 3 4 5
I eat like a generic Animal. I eat like a wolf! I eat like a fish! I eat like a goldfish! I eat like a generic Animal.
纯虚函数示例
在C++语言中, 纯虚函数用一种特别的语法[=0]定义。
1 2 3 4
class Abstract { public: virtual void pure_virtual() = 0; };