sv中interface
时间: 2024-05-16 07:18:44 浏览: 86
svn界面工具语言包
4星 · 用户满意度95%
在C++中,interface(接口)是一种只包含纯虚函数的类。接口类可以被其他类继承,以实现多态性和代码重用。接口类定义了一个通用的协议,派生类必须实现该协议中的所有纯虚函数。
在C++中,使用关键字`class`声明一个接口类,然后通过将成员函数声明为纯虚函数来定义接口。纯虚函数没有函数体,派生类必须提供实现。
下面是一个使用接口的示例:
```cpp
class IShape {
public:
virtual double getArea() const = 0;
virtual double getPerimeter() const = 0;
};
class Circle : public IShape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() const override {
return 3.14 * radius * radius;
}
double getPerimeter() const override {
return 2 * 3.14 * radius;
}
};
class Rectangle : public IShape {
private:
double length;
double width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double getArea() const override {
return length * width;
}
double getPerimeter() const override {
return 2 * (length + width);
}
};
int main() {
Circle circle(5);
Rectangle rectangle(4, 6);
IShape* shape1 = &circle;
IShape* shape2 = &rectangle;
std::cout << "Circle Area: " << shape1->getArea() << std::endl;
std::cout << "Circle Perimeter: " << shape1->getPerimeter() << std::endl;
std::cout << "Rectangle Area: " << shape2->getArea() << std::endl;
std::cout << "Rectangle Perimeter: " << shape2->getPerimeter() << std::endl;
return 0;
}
```
在上面的示例中,IShape是一个接口类,定义了getArea()和getPerimeter()两个纯虚函数。Circle和Rectangle类分别继承IShape,实现了这两个纯虚函数。在main()函数中,我们通过基类指针调用派生类的成员函数,实现了多态性的效果。
阅读全文