#include <iostream>
#include <bits/stdc++.h>
using namespace std;
class Animal
{
public:
virtual void Print(){};
string type,color;
};
class Fish :public Animal
{
public:
Fish(string a,string b,int x)
{
type = a;
color = b;
Osteichthyes = x;
}
virtual void Print()
{
cout<<"type: "<<type<<", color: "<<color<<", Osteichthyes: "<<Osteichthyes<<endl;
}
int Osteichthyes;
};
class Bird :public Animal
{
public:
Bird(string a, string b,int x)
{
type = a;
color = b;
daytime = x;
}
virtual void Print()
{
cout<<"type: "<<type<<", color: "<<color<<", daytime: "<<daytime<<endl;
}
int daytime;
};
int main()
{
Animal *animal;//animal是父类
string type, color;
bool Osteichthyes, daytime;
cin >> type >> color >> Osteichthyes;
Fish fish(type, color, Osteichthyes);
fish.Print();
animal = &fish;//animal指向子类
animal->Print();//父类的Print是虚函数,继承的时候被子类的Print函数覆盖
cin >> type >> color >> daytime;
Bird bird(type, color, daytime);
bird.Print();
animal = &bird;
animal->Print();
return 0;
}
使用父类调用子类成员/函数,虚函数继承时覆盖机制
最新推荐文章于 2024-08-15 08:14:38 发布