当前位置: 首页 > news >正文

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

我们可以在之前的矩形类中添加专门设置和获取宽度、高度的成员函数(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,我们可以更精细地控制对私有成员的访问,既保证了封装性,又增加了代码的健壮性(比如防止设置非法的宽高值)。
http://www.jsqmd.com/news/58451/

相关文章:

  • 2025 十大电暖器品牌推荐:健康防护升级,场景适配更精准
  • 在AdvancedInstaller中通过版本号检查软件部署环境
  • 2025年河南图文矩阵推广服务商权威推荐榜单:河南矩阵推广公司/河南矩阵推广方案/河南矩阵推广引流渠道精选
  • 香橙派R2S手搓双宽带聚合指南
  • QTableView 增加Combox
  • 2025中国汽车电子领域领先企业推荐榜单!我国汽车电子领域有哪些领先企业?
  • 源码解析:CRMEB商品统计模块的业务逻辑与数据库设计
  • 完整教程:Linux学习之旅6
  • Sword B树学习笔记一
  • 混频器混频效率低,噪声大,可能是本振信号强度所致
  • 【*矩阵运算】你不得不会的线性代数/点乘和矩阵乘法的区别/如何加速运算和不保留中间结果(防止爆内存MLE)
  • 2025年五大有实力的电加热导热油炉生产厂家推荐
  • 纺织脉搏,气动赋能:精选高效空压机品牌助力产业升级
  • 博客园,我来啦~
  • 2025年重庆口碑不错的幼儿园机构推荐,专业的幼儿园全解析
  • 2025预糊化淀粉厂家TOP5公平推荐:各有专攻的优质供应商,按需选择更适配
  • 智选纺织动力源:揭秘高效空压机品牌如何为纺织业注入强劲动能
  • 2025年12月角接触球轴承厂家推荐 应用场景涵盖数控机床主轴轴承、机器人轴承、电机轴承
  • Binder机制的优点有哪些?
  • 纺织行业空压机品牌精选:节能与适配性双优方案来袭
  • 2025年12月货架厂家权威TOP5推荐:立足实力,甄选可靠的仓储基石
  • 智选空压动力:深度解析国内空压机实力品牌与行业应用方案
  • 2025 年 12 月试验机,拉力试验机,高低温拉伸试验机厂家最新推荐,聚焦资质、案例、售后的十家机构深度解读!
  • 2025年12月国内空压机品牌权威推荐TOP10:节能与实力的双重考量
  • 2025 年12月挤出机行业优选5优质厂家推荐:比较好的双螺杆挤出机/挤出机设备/单螺杆挤出机/螺杆挤出机/双螺杆颗粒挤出机/平行双螺杆挤出机/三螺杆挤出机/pp双螺杆挤出机/塑胶双螺杆挤出机厂家
  • 2025年柜体发光板批发厂家权威推荐榜单:发光木板‌/圆形发光板‌/发光置物架‌源头厂家精选
  • 2025 年 12 月成都艺术生文化课集训,成都高三冲刺封闭式全托辅导最新推荐,聚焦资质、案例、售后的十家机构深度解读!
  • 2025年卧式LTO沉积设备供货商推荐榜单:Sipos沉积设备/PSG沉积设备/Si3N4沉积设备制造商精选
  • 2025 年北京婚礼堂服务机构最新推荐榜,聚焦品牌服务品质与菜品新鲜度深度解析烟火气宴席北京婚礼堂公司推荐
  • 2025 年蜗轮丝杆升降机厂家厂家最新推荐排行榜:聚焦八大实力企业,解析产品性能与服务优势JWM /按图定制/不锈钢/电动/多台联动蜗轮丝杆升降机公司推荐