什么是抽象类,请用文字说明,并用代码举例,并给出代码结果
时间: 2024-05-14 13:11:45 浏览: 122
抽象类是指在类的内部存在纯虚函数的类,无法直接实例化,只能用作其他类的父类或基类。抽象类可以提供接口规范,定义一些必要的属性或方法,但是具体的实现需要子类来完成。
以下是一个抽象类的示例代码:
```
class Shape {
public:
virtual double getArea() = 0;
};
class Rectangle : public Shape {
public:
Rectangle(double w, double h) : width(w), height(h) {}
virtual double getArea() {
return width * height;
}
private:
double width;
double height;
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
virtual double getArea() {
return 3.1415926 * radius * radius;
}
private:
double radius;
};
int main() {
Shape* shapes[2];
shapes[0] = new Rectangle(2, 3);
shapes[1] = new Circle(1.5);
for (int i=0; i<2; i++) {
std::cout << "Area: " << shapes[i]->getArea() << std::endl;
delete shapes[i];
}
return 0;
}
```
上述代码中,我们定义了一个抽象类 Shape,并定义了一个纯虚函数 getArea()。Rectangle 和 Circle 类都继承自 Shape,但具体的计算方式不同,因此需要分别实现 getArea() 函数。在主函数中,我们定义了 Shape 类型的数组,并分别用 Rectangle 和 Circle 实例来初始化数组元素,在遍历数组并调用 getArea() 函数的过程中,可以看到不同的子类对象调用相同的抽象函数来完成不同的计算。最终的代码结果将分别输出 Rectangle 和 Circle 对象的面积。
阅读全文