抽象类声明
Abstract Class Declarations
我在网上看到了这个问题,我想知道我是否正确地这样做。该网站没有列出答案或指南。
问题
仅为抽象类 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() { }
};
并非所有的都一定是纯虚拟的,但至少其中一个必须是为了使类被认为是抽象的。
相关文章:
- 无法创建抽象类的实例
- 用pybind11包装C++抽象类时出错
- 抽象类错误,请参阅声明" "是抽象的
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 如何在C++中声明抽象类的向量列表?
- 何时在抽象类 cpp 中声明受保护的字段
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 如何在不指定模板类型的情况下声明通用抽象类的对象
- 不能将变量声明为类的抽象
- 抽象类声明
- 显式声明抽象基类
- 我如何在抽象类中声明一个超载的运算符,并在派生的非抽象类中覆盖它
- 我们可以通过在C++中的类中使用关键字“abstract”使所有方法抽象来声明接口类吗
- 是否可以在C++/CLR中实现一个用C#声明的抽象类
- 继承错误 - 无法实例化抽象类 无法访问在类中声明的受保护成员
- 无效地使用不完整的类型/前向错误声明.可能误用抽象类?(c++)
- 使用声明实现这个抽象类
- 抽象类和虚方法问题:不能将变量' list '声明为抽象类型' aStack
' aStack - c++中的抽象类声明
- 为什么我应该为C++中的抽象类声明一个虚拟析构函数