派生类
#include<iostream> using namespace std; class shape { protected: double s; public: void show() { cout << "s= " << s << endl; } }; class rectangle : public shape { protected: double len, width; public: rectangle(double l = 1, double w = 1) : len(l), width(w) { s = len * width; } ~rectangle() {} void setrec(double l = 1, double w = 1) { if (l >= 0 && w >= 0) { len = l; width = w; s = len * width; } else { std::cerr << "Invalid input for rectangle dimensions" << std::endl; } } double getlen() const { return len; } double getwid() const { return width; } void show() { cout << "len=" << len << endl; cout << "width=" << width << endl; shape::show(); } }; int main() { rectangle r(10, 20); r.show(); r.setrec(5, 15); r.show(); }
class rectangle : public shape:定义了一个派生类 rectangle,继承自 shape 类。 protected double len, width;:声明了两个受保护的双精度浮点数,用于存储矩形的长度和宽度。 rectangle(double l = 1, double w = 1) : len(l), width(w) { s = len * width; }: 构造函数,使用成员初始化列表初始化 len 和 width。 计算并存储矩形的面积(通过 s = len * width),将其存储在从基类继承的 s 成员变量中。 ~rectangle() {}:析构函数,目前为空。 void setrec(double l = 1, double w = 1): 可用于重新设置矩形的长度和宽度。 包含输入验证:如果 l 和 w 都大于或等于 0,则更新 len、width 和 s;否则输出错误信息。 double getlen() const { return len; } 和 double getwid() const { return width; }: 定义了两个常量成员函数,分别用于获取矩形的长度和宽度。 const 关键字确保函数不会修改对象的状态。 void show(): 重载了基类的 show() 函数。 输出矩形的长度和宽度,然后调用基类的 show() 函数输出矩形的面积。
这部分是比较难的,现在我还不太明白。