1.思维导图
2> 编程题:
以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:
比喻:动物园的讲解员和动物表演
想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。
在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。
#include <iostream>
using namespace std;
class Animal
{
private:
string name;
int age;
public:
Animal()
{
cout << "a无参" <<endl;
}
Animal(string name,int age):name(name),age(age)
{
cout << "a有参" <<endl;
}
~Animal()
{
cout << "a析构" <<endl;
}
virtual void perform() //虚函数
{
cout << "什么都不会" <<endl;
}
};
class Lion:public Animal
{
private:
string eat;
public:
Lion()
{
cout << "lion无参" <<endl;
}
Lion(string name,int age,string eat):Animal(name,age),eat(eat)
{
cout << "lion有参" <<endl;
}
~Lion()
{
cout << "lion析构" <<endl;
}
void perform()
{
cout << "吃饭" <<endl;
}
};
class Elephant:public Animal
{
private:
string drink;
public:
Elephant()
{
cout << "elephant无参" <<endl;
}
Elephant(string name,int age,string drink):Animal(name,age),drink(drink)
{
cout << "elephant有参" <<endl;
}
~Elephant()
{
cout << "elephant析构" <<endl;
}
void perform()
{
cout << "喝水" <<endl;
}
};
class Monkey:public Animal
{
private:
string shapeshift;
public:
Monkey()
{
cout << "monkey无参" <<endl;
}
Monkey(string name,int age,string shapeshift):Animal(name,age),shapeshift(shapeshift)
{
cout << "monkey有参" <<endl;
}
~Monkey()
{
cout << "monkey析构" <<endl;
}
void perform()
{
cout << "我要玩黑神话悟空!" <<endl;
}
};
int main()
{
Animal *p;
Lion l("xyx",23,"吃饭");
p = &l;
p->perform();
Elephant e("xyx",23,"喝水");
p = &e;
p->perform();
Monkey m("xyx",23,"变身!");
p = &m;
p->perform();
return 0;
}