现在的位置: 首页 > 综合 > 正文

学习笔记-多态的理解-一个基类指着调用多个派生类的虚函数

2012年03月15日 ⁄ 综合 ⁄ 共 899字 ⁄ 字号 评论关闭
#include <iostream>
using namespace std;

class Mammal
{
public:
Mammal():itsAge(1) { }
virtual ~Mammal() { }
virtual void Speak() const { cout << "Mammal speak!\n"; }

protected:
int itsAge;
};

class Dog : public Mammal
{
public:
void Speak()const { cout << "Woof!\n"; }
};

class Cat : public Mammal
{
public:
void Speak()const { cout << "Meow!\n"; }
};


class Horse : public Mammal
{
public:
void Speak()const { cout << "Winnie!\n"; }
};


class Pig : public Mammal
{
public:
void Speak()const { cout << "Oink!\n"; }
};

int main()
{
Mammal* theArray[5];
Mammal* ptr;
int choice, i;
for ( i = 0; i<5; i++)
{
cout << "(1)dog (2)cat (3)horse (4)pig: ";
cin >> choice;
switch (choice)
{
case 1: ptr = new Dog;
break;
case 2: ptr = new Cat;
break;
case 3: ptr = new Horse;
break;
case 4: ptr = new Pig;
break;
default: ptr = new Mammal;
break;
}
theArray[i] = ptr;
}
for (i=0;i<5;i++)
theArray[i]->Speak();

return 0;
}

这个程序非常体现多态性,运行时才决定调用哪一个函数,Mammal* ptr;指针在运行时才决定调用哪一个派生类的函数

 

作者: 林羽飞扬
出处:http://www.cnblogs.com/zhengyuhong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留作者信息,且在文章页面明显位置给出原文连接

抱歉!评论已关闭.