在C++中,接口(Interface)是一种抽象的概念,用于定义类或模块对外提供的操作、方法或功能的集合。接口规定了类或模块的公共契约,描述了其可用的方法和属性,而不涉及具体的实现细节。

在C++中,接口可以通过抽象类(Abstract Class)和纯虚函数(Pure Virtual Function)来实现。

抽象类是一个包含至少一个纯虚函数的类,无法直接实例化,只能作为基类使用。抽象类用于定义接口,规定了派生类必须实现的方法。派生类必须实现基类的纯虚函数才能被实例化。抽象类中可以包含非纯虚函数和成员变量。

以下是一个抽象类的示例:

class AbstractShape {
public:
    virtual void draw() = 0;   // 纯虚函数,定义了接口
    virtual double area() = 0; // 纯虚函数,定义了接口

    void printName() {
        std::cout << "Abstract Shape" << std::endl;
    }
};

class Circle : public AbstractShape {
public:
    void draw() override {
        std::cout << "Drawing a circle." << std::endl;
    }

    double area() override {
        // 计算圆的面积
    }
};

class Rectangle : public AbstractShape {
public:
    void draw() override {
        std::cout << "Drawing a rectangle." << std::endl;
    }

    double area() override {
        // 计算矩形的面积
    }
};

在上述示例中,`AbstractShape` 是一个抽象类,包含了纯虚函数 `draw()` 和 `area()`,定义了图形类的接口。派生类 `Circle` 和 `Rectangle` 必须实现这两个纯虚函数才能被实例化。

纯虚函数通过在声明末尾添加 `= 0` 来标记,它们没有默认的实现,只提供了接口的定义。任何包含纯虚函数的类都被认为是抽象类,不能直接实例化,只能作为基类使用。

接口的使用可以实现多态性,使得不同的类可以使用相同的接口来进行操作,增强了代码的灵活性、可扩展性和可维护性。

Logo

科技之力与好奇之心,共建有温度的智能世界

更多推荐