我有一个关于继承的问题 我在网上找到了这个教程,并想知道为什么“Dog”的输出实际上是“Animal print” 我知道Animal指针指向Dog的地址, 但为什么不打印“狗印”?
请帮助我,我是C ++的新手。
以下是代码:
#include <iostream>
using namespace std;
class Animal {
public:
void print();
};
void Animal::print() {
cout << "Animal print" << endl;
}
class Dog : public Animal {
public:
void print();
};
void Dog::print() {
cout << "Dog print" << endl;
}
int main() {
Dog h;
Animal *eptr = &h;
eptr->print();
eptr->Animal::print();
}
输出:
Animal print
Animal print
答案 0 :(得分:1)
此处,子类对象(dog)由基类对象(动物)指向。但它的局限性只取决于基类行为。
#include <iostream>
using namespace std;
class Animal {
public:
virtual void print();
};
void Animal::print() {
cout << "Animal print" << endl;
}
class Dog : public Animal {
public:
void print();
};
void Dog::print() {
cout << "Dog print" << endl;
}
int main() {
Dog h;
Animal *eptr = &h;
eptr->print();
eptr->Animal::print();
}
您可以使用虚函数通过基类对象访问子类。