C++中的抽象类是指包含至少一个纯虚函数的类。纯虚函数是指没有实现,需要在派生类中重写的函数。
例如,下面是一个抽象类的例子:
class Shape {
public:
virtual float getArea() = 0; // 纯虚函数
virtual float getPerimeter() = 0; // 纯虚函数
};
这个Shape
类包含两个纯虚函数getArea()
和getPerimeter()
,因此它是一个抽象类。任何继承自Shape
的类都必须实现这两个函数。例如:
class Circle : public Shape {
public:
Circle(float radius) : radius_(radius) {}
float getArea() override { return 3.14f * radius_ * radius_; }
float getPerimeter() override { return 2 * 3.14f * radius_; }
private:
float radius_;
};
在这个例子中,Circle
类继承自Shape
类并实现了getArea()
和getPerimeter()
函数。其他继承自Shape
的类也可以实现这两个函数,但它们必须实现这两个函数才能被实例化。因此,抽象类可以用来强制派生类实现某些函数,从而提供一种强制类型检查的方法。
抽象类主要用作强制接口定义,如果要求派生类必须实现几个函数,就可以考虑做成虚函数,强制要求派生类实现。