C++ 接口(抽象类)

文摘   2024-08-17 07:30   内蒙古  

在C++中,接口通常通过抽象类来实现。抽象类是一个包含至少一个纯虚函数的类,它不能被实例化,但可以作为其他类的基类,从而定义了一组接口方法,子类必须实现这些接口方法。

接口(抽象类)的实现:

抽象类通常用于定义一组接口方法,子类必须实现这些方法才能被实例化。在C++中,可以通过纯虚函数来实现抽象类。

示例:

#include <iostream>

// 抽象类 Shape
class Shape {
public:
    // 纯虚函数,定义接口
    virtual double area() const 0;
    virtual void printInfo() const 0;
};

// 子类 Circle
class Circle : public Shape {
private:
    double radius;

public:
    Circle(double r) : radius(r) {}

    double area() const override {
        return 3.14159 * radius * radius;
    }

    void printInfo() const override {
        std::cout << "Circle with radius " << radius << std::endl;
    }
};

// 子类 Rectangle
class Rectangle : public Shape {
private:
    double length;
    double width;

public:
    Rectangle(double l, double w) : length(l), width(w) {}

    double area() const override {
        return length * width;
    }

    void printInfo() const override {
        std::cout << "Rectangle with length " << length << " and width " << width << std::endl;
    }
};

int main() {
    Circle circle(5.0);
    Rectangle rectangle(4.06.0);

    Shape* shapes[] = {&circle, &rectangle};

    for (const auto& shape : shapes) {
        shape->printInfo();
        std::cout << "Area: " << shape->area() << std::endl;
    }

    return 0;
}

在上面的示例中,Shape是一个抽象类,定义了两个纯虚函数areaprintInfo作为接口。CircleRectangleShape的子类,必须实现areaprintInfo方法才能被实例化。

优点:

  1. 「接口定义」:抽象类定义了一组接口方法,规范了子类的实现。

  2. 「多态性」:通过抽象类,可以实现多态性,即不同子类对象可以通过统一的接口进行操作。

  3. 「灵活性」:抽象类提供了一种灵活的设计方式,允许在不同子类中实现相同的接口方法,从而实现不同的行为。


兄弟嵌入式
从入门到精通,学习并分享嵌入式软、硬件的知识。
 最新文章