代码:
#include <iostream>
class Pet {
public:
virtual void speak() = 0;
virtual void eat() = 0;
};
class Dog : public Pet {
public:
void speak() {
std::cout<<"speak"<<std::endl;
}
void eat() {
std::cout<<"eat"<<std::endl;
}
};
class littleDog : public Dog {
public:
void speak() {
std::cout<<"small speak"<<std::endl;
}
void eat() {
std::cout<<"little eat"<<std::endl;
}
};
int main() {
Dog dog;
littleDog ld;
Dog *p = &dog;
p->speak();
p->eat();
p = &ld;
p->speak();
p->eat();
return 0;
}
结果:
为什么?