1. 定义接口类型

在 C++ 中,接口类型是通过抽象基类来定义的,其作用是规定了多个类之间的共同特征和行为,但本身不能实例化对象。

我们可以通过在类的声明中将至少一个纯虚函数(即没有实现的虚函数)来定义接口类型。一个类如果继承了该接口,就必须实现接口中的所有纯虚函数。下面是一个例子:

class Shape {
public:
    virtual void draw() = 0; // 纯虚函数,定义接口
    virtual double getArea() const = 0; // 纯虚函数,定义接口
};
Plain text

在上面的例子中,定义了一个 Shape 接口类型,包含了两个纯虚函数 draw 和 getArea。任何继承了 Shape 接口的子类都必须实现这两个纯虚函数。

2. 实现接口类型

要实现一个接口类型,需要创建一个继承了该接口的具体类,并在该类中实现接口中的所有纯虚函数。以下是一个继承了 Shape 接口的具体类 Circle 的例子:

class Circle : public Shape {
public:
    void draw() {
         // 实现绘制圆形的代码
    }
  
    double getArea() const {
        // 根据圆的半径计算面积并返回
    }
};
Plain text

在上面的例子中,Circle 类继承了 Shape 接口,并在类中实现了 draw 和 getArea 函数。通过这样的方式,我们定义了一个具体的圆形类,其实现了 Shape 接口规定的方法。

3. 使用接口类型

在其他代码中,我们可以使用接口类型来声明接口类型的指针或引用,并将它指向继承了该接口的对象。这样可以实现对同一个接口类型的不同实现的统一操作。以下是一个使用 Shape 接口类型的例子:

void printShapeArea(const Shape& shape) {
    shape.draw();
    double area = shape.getArea();
    cout << "The area of the shape is: " << area << endl;
}

int main() {
    Circle circle;
    printShapeArea(circle);
  
    return 0;
}
Plain text

在上面的例子中,我们定义了一个 printShapeArea 函数,它接受一个 Shape 类型的引用作为参数,并调用了该引用对象的 draw 和 getArea 方法。在 main 函数中,我们创建了一个 Circle 对象,并将其传递给 printShapeArea 函数。通过接口类型的使用,我们可以对不同实现的图形进行统一的操作。


本文由轻山版权所有,禁止未经同意的情况下转发