C++入门——60s从0到1
纯虚函数与抽象类
在C++中,纯虚函数是一种特殊的成员函数,它没有函数体,只有函数声明。纯虚函数的声明方式是在函数声明后面加上`=0`。纯虚函数的目的是让派生类必须实现这个方法,否则它们不能成为这个抽象类的子类。
抽象类是一种特殊的类,它至少包含一个纯虚函数。抽象类不能被实例化,只能被继承。抽象类的作用是提供一个接口规范,让派生类实现这个接口规范。
下面是一个简单的示例代码,演示了如何定义和使用抽象类和纯虚函数:
#include <iostream> using namespace std; // 抽象类 Shape class Shape { public: virtual double area() = 0; // 纯虚函数 }; // 派生类 Rectangle class Rectangle: public Shape { public: double width; double height; Rectangle(double w, double h): width(w), height(h) {} double area() override { return width * height; } // 重写虚函数 }; // 派生类 Circle class Circle: public Shape { public: double radius; Circle(double r): radius(r) {} double area() override { return 3.14 * radius * radius; } // 重写虚函数 };
在上面的例子中,我们定义了一个抽象基类`Shape`,它包含一个纯虚函数`area()`。然后我们定义了两个派生类`Rectangle`和`Circle`,它们都继承自`Shape`并实现了`area()`函数。由于`Shape`是抽象类,所以它不能被实例化,只能被继承。通过这种方式,我们可以定义一个接口规范,让派生类来实现这个接口规范。这种方式可以让我们的代码更加灵活和可扩展,因为它允许我们在不知道对象的确切类型的情况下使用对象。