抽象类声明



我在网上看到了这个问题,我想知道我是否正确地这样做。该网站没有列出答案或指南。

问题

仅为抽象类 Animal 编写声明。动物应包含名称和年龄的属性,以及函数显示设置字段具体。编写从 Animal 派生的类 Tiger 的声明和实现,其中 Tiger 具有适当的重写函数,使用基类 1。Tiger 具有与条带(整数)和尾长相关的其他数据字段。

如果你能说出我做得是否正确,我会很感激。

动物类

 class Animal{
  private:
  string name;
  int age;
  public:
  void display();
  void setFields(string, int);
  void concrete();
};

老虎级

 class Tiger:public Animal{
 private:
 int strips;
 int tailLength;
 public:
 void display();
 void setFields(string, int, int, int);
};

如果希望派生类能够重写基类方法,则需要将这些virtual。否则,派生类将仅隐藏要重写的方法的名称。还应提供虚拟析构函数。

class Animal{
  private:
  std::string name;
  int age;
  public:
  virtual void display();
  virtual void setFields(string, int);
  virtual void concrete();
  virtual ~Animal() {}
};

目前尚不清楚赋值对抽象基类意味着什么。 通常这意味着至少一个纯虚拟方法没有实现。但是赋值提到在适当的情况下使用基类实现,这意味着你应该在 Animal 中提供一些实现。

抽象类使用纯虚拟成员函数:

class Animal{
  private:
  string name;
  int age;
  public:
  virtual void display() = 0;
  virtual void setFields(string, int) = 0;
  virtual void concrete() = 0;
  virtual ~Animal() { }
};
并非所有的都

一定是纯虚拟的,但至少其中一个必须是为了使类被认为是抽象的。

最新更新