#include<iostream>
#include<string>
using namespace std;
class animal {
public:
void virtual speak() { //设置为虚函数
cout << "动物在叫" << endl;
}
};
class Cat:public animal {
public:
void speak() {
cout << "猫在叫" << endl;
}
};
class Dog :public animal {
public:
void speak() {
cout << "狗在叫" << endl;
}
};
void DoSpeak(animal& p) { //传入父类的引用对象
p.speak();
}
int main() {
Dog dog;
DoSpeak(dog); //当你没用虚函数的时候,这里输出的是动物在叫,这里传入dog实例
}
//当你使用虚函数的时候,子类会重写speak函数,父类的函数会成为指针指向子类的函数
//1.有继承关系 2.子类重写父类函数 3.DoSpeak函数传入对象,父类的指针或引用会指向子类对象
最后修改:2022 年 12 月 05 日
© 允许规范转载