C++编程思想 第1卷 第9章 内联函数 内联函数 访问器和修改器

本文介绍了C++编程中内联函数、访问器(accessor)和修改器(mutator)的概念。访问器用于读取对象状态,而修改器则用于修改状态。通过重载函数,可以实现读写操作。文中提到,内联函数常用于实现访问器和修改器,以提高效率。此外,还讨论了如何通过get和set方法来标识这些功能,并且指出访问器和修改器可能包含复杂计算。同时,文章给出了Time类的一个实例,展示了如何利用内联函数进行时间处理,包括构造函数的初始化和状态更新标志的管理。

一些人进一步访问函数的概念分为访问器 accessor,用于从一个对象读状态
信息和 修改器 mutator 用于修改状态信息。 而且,可以用重载函数为访问器
和修改器提供相同函数名,调用函数的方式决定了是读还是修改状态信息
 

//: C09:Rectangle.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Accessors & mutators

class Rectangle {
  int wide, high;
public:
  Rectangle(int w = 0, int h = 0)
    : wide(w), high(h) {}
  int width() const { return wide; } // Read
  void width(int w) { wide = w; } // Set
  int height() const { return high; } // Read
  void height(int h) { high = h; } // Set
};

int main() {
  Rectangle r(19, 47);
  // Change width & height:
  r.height(2 * r.width());
  r.width(2 * r.height());
} ///:~

 

构造函数使用构造函数初始化列表来初始化wide和high值
不能让成员函数名与数据成员名相同,于是我们也许想用下划线作为标识符
的第一字符来区分这些数据成员

无输出

可以选用 get 和 set 来标识访问器和修改器

 

//: C09:Rectangle2.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Accessors & mutators with "get" and "set"

class Rectangle {
  int width, height;
public:
  Rectangle(int w = 0, int h = 0)
    : width(w), height(h) {}
  int getWidth() const { return width; }
  void setWidth(int w) { width = w; }
  int getHeight() const { return height; }
  void setHeight(int h) { height = h; }
};

int main() {
  Rectangle r(19, 47);
  // Change width & height:
  r.setHeight(2 * r.getWidth());
  r.setWidth(2 * r.getHeight());
} ///:~

 

当然,访问器和修改器对于内部变量来说,不必是简单的管道

无输出

有时,访问器和修改器可以执行一些比较复杂的计算

使用标准的C库函数中的时间函数来生成简单的Time类:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值