在示例代码中添加设置和获取矩形宽度和高度的成员函数
我们可以在之前的矩形类中添加专门设置和获取宽度、高度的成员函数(
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;
}
关键修改说明
-
getter函数:getWidth() const和getHeight() const:用于获取私有成员width和height的值。const关键字表示这些函数不会修改对象的任何成员变量,保证代码的安全性和可读性。
-
setter函数:setWidth(double w)和setHeight(double h):用于设置私有成员的值,且包含合法性检查(不允许设置负数),避免非法数据。
运行结果
plaintext
矩形对象已创建!
矩形宽:3.5, 高:2
面积:7, 周长:11
当前宽度:3.5
当前高度:2
修改后:
矩形宽:5, 高:4
面积:20, 周长:18
尝试设置负数宽度:
宽度不能为负数!
尝试设置负数高度:
高度不能为负数!
矩形对象已销毁!
通过
getter 和 setter,我们可以更精细地控制对私有成员的访问,既保证了封装性,又增加了代码的健壮性(比如防止设置非法的宽高值)。

浙公网安备 33010602011771号