C++知识 抽象基类
2023-12-13 17:14:13
抽象基类通常包含至少一个纯虚函数,即一个没有具体实现的虚函数,通过在基类中声明纯虚函数,它强制派生类提供这个函数的具体实现。
通过在类的声明中使用 virtual
关键字和 = 0
初始化来创建纯虚函数,这样的类就成为抽象基类。以下是一个示例:
class Shape {
public:
// 纯虚函数,使得Shape成为抽象基类
virtual void draw() const = 0;
// 其他虚函数
virtual double area() const {
return 0.0;
}
// 普通成员函数
void displayInfo() const {
// ...
}
};
让我们对 virtual void draw() const = 0;
这行代码的每个部分进行简单的介绍:
-
virtual
关键字:virtual
是 C++ 中用于声明虚函数的关键字。
-
void
:void
是函数的返回类型,表示该函数不返回任何值。
-
draw()
:draw
是函数的名称,这里是虚函数的名称。
-
const
关键字:const
是常量修饰符,表示该函数不会修改调用对象的成员变量。- 这种声明方式可以使得常量对象也能够调用这个函数。
-
= 0
:= 0
是在声明中虚函数的方式,表示这是一个纯虚函数。- 纯虚函数是没有实际实现的虚函数,要求任何派生类必须提供自己的实现。
- 类中有纯虚函数的类称为抽象基类,不能被实例化,只能被用作其他类的基类。
所以,virtual void draw() const = 0;
表示这是一个虚函数 draw
,它是一个纯虚函数,没有具体的实现,而且它不会修改调用对象的状态。
在这个例子中,Shape
就是一个抽象基类,它包含一个纯虚函数 draw()
。任何继承自 Shape
的派生类都必须提供 draw()
的具体实现。
int main() {
// 错误,不能实例化抽象类
// Shape shape;
// Shape的纯虚函数draw()必须在派生类中实现
return 0;
}
抽象基类的目的是为了提供一个通用的接口,使得不同的派生类能够共享相似的行为,并通过多态性实现对这些不同派生类的统一处理。
文章来源:https://blog.csdn.net/colortztzztzt/article/details/134902398
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!