在示例代码中添加设置和获取矩形宽度和高度的成员函数

我们可以在之前的矩形类中添加专门设置和获取宽度、高度的成员函数(getter 和 setter),让对私有成员的访问更灵活且安全。以下是修改后的完整代码:
cpp
 
运行
#include <iostream>
using namespace std;

// 定义矩形类
class Rectangle {
private:
    // 私有成员变量(封装:外部无法直接访问)
    double width;
    double height;

public:
    // 构造函数(初始化对象)
    Rectangle(double w = 0, double h = 0) : width(w), height(h) {
        cout << "矩形对象已创建!" << endl;
    }

    // 析构函数(对象销毁时调用)
    ~Rectangle() {
        cout << "矩形对象已销毁!" << endl;
    }

    // 成员函数:计算面积
    double getArea() {
        return width * height;
    }

    // 成员函数:计算周长
    double getPerimeter() {
        return 2 * (width + height);
    }

    // ---------- 添加的 getter 和 setter 函数 ----------
    // 获取宽度
    double getWidth() const { // const 表示该函数不修改对象成员
        return width;
    }

    // 设置宽度(带合法性检查)
    void setWidth(double w) {
        if (w >= 0) {
            width = w;
        } else {
            cout << "宽度不能为负数!" << endl;
        }
    }

    // 获取高度
    double getHeight() const {
        return height;
    }

    // 设置高度(带合法性检查)
    void setHeight(double h) {
        if (h >= 0) {
            height = h;
        } else {
            cout << "高度不能为负数!" << endl;
        }
    }
    // ---------------------------------------------------

    // 成员函数:显示信息
    void showInfo() {
        cout << "矩形宽:" << width << ", 高:" << height << endl;
        cout << "面积:" << getArea() << ", 周长:" << getPerimeter() << endl;
    }
};

int main() {
    // 创建矩形对象
    Rectangle rect(3.5, 2.0);
    rect.showInfo();

    // 使用 getter 获取宽度和高度
    cout << "\n当前宽度:" << rect.getWidth() << endl;
    cout << "当前高度:" << rect.getHeight() << endl;

    // 使用 setter 修改宽度和高度
    rect.setWidth(5.0);
    rect.setHeight(4.0);
    cout << "\n修改后:" << endl;
    rect.showInfo();

    // 尝试设置负数(触发合法性检查)
    cout << "\n尝试设置负数宽度:" << endl;
    rect.setWidth(-2.0);
    cout << "尝试设置负数高度:" << endl;
    rect.setHeight(-3.0);

    return 0;
}
 

关键修改说明

  1. getter 函数
    • getWidth() const 和 getHeight() const:用于获取私有成员 width 和 height 的值。
    • const 关键字表示这些函数不会修改对象的任何成员变量,保证代码的安全性和可读性。
  2. setter 函数
    • setWidth(double w) 和 setHeight(double h):用于设置私有成员的值,且包含合法性检查(不允许设置负数),避免非法数据。

运行结果

plaintext
矩形对象已创建!
矩形宽:3.5, 高:2
面积:7, 周长:11

当前宽度:3.5
当前高度:2

修改后:
矩形宽:5, 高:4
面积:20, 周长:18

尝试设置负数宽度:
宽度不能为负数!
尝试设置负数高度:
高度不能为负数!
矩形对象已销毁!
 
通过 getter 和 setter,我们可以更精细地控制对私有成员的访问,既保证了封装性,又增加了代码的健壮性(比如防止设置非法的宽高值)。
posted @ 2025-12-02 16:27  C++大哥来也  阅读(0)  评论(0)    收藏  举报