C++学习, 接口
接口描述了类的行为和功能,不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。
类中至少有一个函数被声明为纯虚函数,这个类就是抽象类,纯虚函数声明中使用 "= 0" 指定。
class Box
{
public:
// 纯虚函数
virtual double getVolume() = 0;
private:
double length; // 长度
double breadth; // 宽度
double height; // 高度
};
抽象基类是一个至少包含一个纯虚函数的类。由于它至少包含一个纯虚函数,因此它不能被实例化。抽象基类通常用作接口,定义了一组必须由派生类实现的函数。
抽象基类和纯虚函数示例:
<iostream>
// 定义一个接口(通过抽象基类)
class Shape {
public:
// 纯虚函数,要求派生类必须实现
virtual void draw() const = 0;
// 虚析构函数,基类指针删除派生类对象时能够正确调用派生类的析构函数
virtual ~Shape() {}
};
// 派生类实现接口
class Circle : public Shape {
public:
void draw() const override {
std::cout << "Drawing Circle" << std::endl;
}
};
class Rectangle : public Shape {
public:
void draw() const override {
std::cout << "Drawing Rectangle" << std::endl;
}
};
// 使用接口
void drawShape(const Shape& shape) {
shape.draw();
}
int main() {
Circle circle;
Rectangle rectangle;
drawShape(circle); // 输出: Drawing Circle
drawShape(rectangle); // 输出: Drawing Rectangle
return 0;
}