将成员变量声明为private和用非成员、非友友提高封装性(Effective C++_22、23))
来源:互联网 发布:游戏截图软件fraps 编辑:程序博客网 时间:2024/06/05 00:58
一、将成员变量声明为private (条款22)
■ 切记将成员变量声明为private.这可赋予客户访问数据的一致性,可细微划分访问控制,允诺约束条件获得保证,
并提供class作者以充分的实现弹性.
■ protected并不比public更具封装性.
二、宁以非成员、非友元函数替换成员函数(条款23)
(1)之所以这样做,是为了减少能够访问private成员的代码的数量,以此来提高封装性
(2)考虑下列问题,有一个class用来表示网页浏览器:
class WebBrowser { pbulic: .... void clearCache(); //清除下载高速缓存区(cache of downloaded elements) void clearHistory(); //清除访问过的URLs的历史记录(history of visited URLs) void removeCookies(); //移除系统中的所有cookies .... };
许多用户会想整个执行所有这些动作,因此需要提供一个函数,考虑提供一个member函数
class WebBrowser { public: ..... void clearEverything(); ..... };
也可以使用一个non-member函数
void clearBrowser(WebBrowser& wb) { wb.clearCache(); wb.clearHistory(); wb.removeCookies(); }
当越多的函数可访问它,数据的封装性就愈低。因此我们可以这样来看对于一个class来说,如果member函数和一个non-member non-friend函数有相同的机能,那么non-member non-friend函数有较大封装性。因为它并不增加对class中的私有成员变量的访问数量。
参考:Effective C++ 3rd(侯捷译)
0 0
- 将成员变量声明为private和用非成员、非友友提高封装性(Effective C++_22、23))
- effective c++条款21,22,23(返回对象时,别妄想反回其引用,将成员变量声明为private,宁可拿非成员非友元函数替换成员函数(增强封装性))
- Effective C++:条款22:将成员变量声明为private
- C++之将成员变量声明为private(22)---《Effective C++》
- Effective C++读书笔记---将成员变量声明为Private;宁以非成员、非友元函数替换成员函数
- Effective C++ Item 22 将成员变量声明为private
- effective c++ 将成员变量声明为private
- 《Effective C++》学习笔记条款22 将成员变量声明为private
- Effective C++——》条款22:将成员变量声明为private
- 读书笔记《Effective C++》条款22:将成员变量声明为private
- item22: 将成员变量声明为private
- [翻译] Effective C++, 3rd Edition, Item 22: 将 data members(数据成员)声明为 private
- 将成员变量声明为private——effective c++学习笔记
- Effective C++ 读书笔记 条款22:将成员变量声明为private
- 条款22:将成员变量声明为private
- 条款22:将成员变量声明为private
- 条款22:将成员变量声明为private
- 条款22:将成员变量声明为private
- linux下动态库的符号冲突、隐藏和强制优先使用库内符号
- [Hnoi2013]游走(bzoj3143)
- java通过HTTP接收xml和返回xml
- POJ 3111 K Best(最大化平均值)
- zoj2112(单点修改区间第K小)
- 将成员变量声明为private和用非成员、非友友提高封装性(Effective C++_22、23))
- 智力类笔试题基础(图形1
- hadoop权威指南(第四版)要点翻译(6)——Chapter 4. YARN(1)
- poj3159candies
- hdu3466
- python操作redis之连接reids
- Graham求凸包。
- GDB 调试正在运行的进程
- 湖南2015省队集训(bzoj4174)tty的求助