继承 - 使用指针输出

时间:2016-04-08 10:34:21

标签: c++

我有一个关于继承的问题 我在网上找到了这个教程,并想知道为什么“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

1 个答案:

答案 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();

}

您可以使用虚函数通过基类对象访问子类。