谁能表达一个简短的c ++代码,该代码应显示指针与继承之间的关系。

我相信以下代码是我的问题

class Animal {
  public:
    virtual void MakeSound(const char* pNoise) { ... }
    virtual void MakeSound() { ... }
};

class Dog : public Animal {
  public:
    virtual void MakeSound() {... }
};

int main() {
  Animal* a = new Dog();
  Dog* d = new Dog();
  a->MakeSound("bark");
  d->MakeSound("bark"); // Does not compile
  return 0;
}

最佳答案

您将基类MakeSound隐藏在其他MakeSound的覆盖下,因此它不参与重载解析。要么在Dog中要么都覆盖,要么都不覆盖,或者将其中之一重命名为MakeNoise

关于c++ - 指针与继承C++ oop之间的关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52748572/

10-11 21:14