纯虚函数是无实现的虚函数,要求派生类重写,语法为virtual 返回类型 函数名() = 0;;包含纯虚函数的类为抽象类,不能实例化,用于定义接口和实现多态。

在C++中,纯虚函数和抽象类是实现多态和接口设计的重要机制。它们为类的继承体系提供了规范,强制派生类实现特定功能。
纯虚函数是一种特殊的虚函数,它在基类中声明但不提供实现,要求派生类必须重写该函数。纯虚函数的语法形式如下:
virtual 返回类型 函数名() = 0;例如:
class Shape { public: virtual void draw() = 0; // 纯虚函数 };这个 draw() 函数没有函数体,只是定义了接口。任何包含纯虚函数的类都不能直接实例化对象。
立即学习“C++免费学习笔记(深入)”;
只要一个类中有一个或多个纯虚函数,它就被称为抽象类。抽象类不能创建对象,它的作用是作为其他类的基类,定义一组公共接口。
比如上面的 Shape 类就是一个抽象类。你可以用它来指代具体图形,但不能写 Shape s; 这样的代码。
抽象类常用于以下场景:
看一个完整例子:
#include <iostream> using namespace std;class Shape { public: virtual void draw() = 0; // 纯虚函数 virtual ~Shape() {} // 虚析构函数推荐添加 };
class Circle : public Shape { public: void draw() override { cout << "Drawing a circle\n"; } };
class Rectangle : public Shape { public: void draw() override { cout << "Drawing a rectangle\n"; } };
在这个例子中,Shape 是抽象类,Circle 和 Rectangle 是具体类,必须实现 draw() 函数。
可以通过基类指针调用多态行为:
int main() { Shape* shapes[2]; shapes[0] = new Circle(); shapes[1] = new Rectangle();for (int i = 0; i < 2; ++i) {
shapes[i]->draw(); // 动态绑定,调用对应实现
}
for (int i = 0; i < 2; ++i) {
delete shapes[i];
}
return 0;}
使用抽象类时需要注意几点:
例如,下面这种写法是允许的:
virtual void func() = 0; // 在类外定义: void Base::func() { cout << "default impl"; }此时派生类仍需重写,但可以选择调用基类默认实现。
基本上就这些。纯虚函数和抽象类是C++面向对象设计的核心工具,合理使用能提升代码的可维护性和扩展性。
以上就是c++++中纯虚函数和抽象类是什么_c++纯虚函数与抽象类概念解析的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号