Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 抽象类声明_C++_Abstract Class - Fatal编程技术网

C++ 抽象类声明

C++ 抽象类声明,c++,abstract-class,C++,Abstract Class,我在网上看到了这个问题,我想知道我做的是否正确。该网站没有列出答案或指南 问题 只为抽象类Animal编写声明动物应包含名称和年龄的属性,以及功能显示、设置字段和具体。编写从动物派生的类老虎的声明和实现,其中老虎具有适当的重写函数,请使用基类1。Tiger具有与条带(整数)和尾长相关的附加数据字段 如果你能看出我做得是否正确的话,我会上诉 动物类 class Animal{ private: string name; int age; public: void displa

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

问题

只为抽象类Animal编写声明动物应包含名称年龄的属性,以及功能显示设置字段具体。编写从动物派生的类老虎的声明和实现,其中老虎具有适当的重写函数,请使用基类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);
};

如果希望派生类能够重写基类方法,则需要将这些方法设置为虚拟的。否则,派生类只会隐藏要重写的方法的名称。你也应该


关于抽象基类,赋值的含义尚不清楚。通常这意味着至少有一个没有实现。但是分配提到在适当的情况下使用基类实现,这意味着您应该在
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() { }
};

并不是所有的类都必须是纯虚拟的,但至少有一个类必须是虚拟的,这样类才能被认为是抽象的。

我很好奇。stripes的作用是什么?也许是stripes(如“number of”)。@MarkGarcia这只是tiger类的另一个属性
class Animal{
  private:
  string name;
  int age;
  public:
  virtual void display() = 0;
  virtual void setFields(string, int) = 0;
  virtual void concrete() = 0;
  virtual ~Animal() { }
};