📜  C ++ |类和对象|问题5(1)

📅  最后修改于: 2023-12-03 15:29:42.597000             🧑  作者: Mango

C++ | 类和对象 | 问题5

简介

C++是一种广泛使用的面向对象编程语言,具有高效的编译器和兼容C语言的语法。类和对象是C++中的两个重要的概念,可以用来封装数据和方法。问题5主要涉及到C++中类和对象的继承和多态性。

题目描述

在C++中,可以通过继承来创建一个派生类。派生类可以继承基类的属性和方法,并且还可以添加自己的属性和方法。在本问题中,需要创建一个基类Shape,其中包括两个属性:名称和颜色,以及一个计算面积的虚函数area()。同时,需要创建两个派生类Rectangle和Square,它们都继承自Shape类,并且都需要添加自己的属性和实现自己的面积计算方法。

实现步骤
  1. 定义基类Shape,包括两个属性name和color,以及一个虚函数area(),用于计算面积。
class Shape {
public:
    string name;
    string color;
    virtual double area() = 0;
};
  1. 定义派生类Rectangle,继承自Shape类,并且添加自己的属性width和height,以及重写虚函数area()。
class Rectangle : public Shape {
public:
    double width;
    double height;
    Rectangle(string n, string c, double w, double h) {
        name = n;
        color = c;
        width = w;
        height = h;
    }
    double area() {
        return width * height;
    }
};
  1. 定义派生类Square,继承自Shape类,并且添加自己的属性side,以及重写虚函数area()。
class Square : public Shape {
public:
    double side;
    Square(string n, string c, double s) {
        name = n;
        color = c;
        side = s;
    }
    double area() {
        return side * side;
    }
};
  1. 在main函数中,创建Shape、Rectangle、Square类的对象,并调用它们各自的area()方法计算面积。
int main() {
    Shape* shape = new Shape();
    Rectangle* rectangle = new Rectangle("rectangle", "red", 2, 4);
    Square* square = new Square("square", "blue", 3);

    cout << rectangle->name << " " << rectangle->color << " area is " << rectangle->area() << endl;
    cout << square->name << " " << square->color << " area is " << square->area() << endl;

    return 0;
}
总结

本问题主要涉及到C++中类和对象的继承和多态性。继承可以让派生类继承基类的属性和方法,并且还可以添加自己的属性和方法。多态性可以让派生类重写基类的虚函数,并且在运行时选择正确的函数调用。通过这些关键概念,我们可以创建复杂的类层次结构,使程序更加简洁、易懂和可维护。