多态的实质:父类的引用或指针指向子类对象
怎么理解?
假设我们现在有如下的类,其中Animal为基类,Cat和Dog都是其派生类。
class Animal{
public:
virtual void speak(){
cout << "动物在说话" << endl;
}
};
class Cat :public Animal{
public:
void speak(){
cout << "小猫在说话" << endl;
}
};
class Dog :public Animal{
public:
void speak(){
cout << "小狗在说话" << endl;
}
};
1.父类指针指向子类对象
调用时,可以定义父类的指针,然后指向子类的对象,指向哪个对象,便执行其对象的虚函数实现
int main() {
方法1:
Dog B;
Animal *A=&B;
A->speak();
如果你不想给Dog类取名:
Animal *A=new Dog;
A->speak();
方法2:
A=new Cat;//如果小猫有名字A=new Cat("名字");
A->speak();
return