【23】宁以non-member、non-friend替换member函数
2024-08-22 02:48:01
1、non-member方法与member方法没有本质区别,对于编译器来说,都是non-member方法,因为member方法绑定的对象,会被编译器转化为non-member方法的第一个形参。non-member方法与member方法唯一的区别是:member方法封装性更差,因为它可以访问private成员。
2、根据面向对象的要求,数据与方法应该和对象捆绑在一起,这意味着应该使用member方法。其实,这个建议是错误的。为什么?
3、首先,non-member、non-friend方法提供更大的封装性。
4、其次,考虑下面的需求,我只需要类中的一个方法。如果是member方法,必须把整个class定义包含进来,即使其他的接口我不使用。如果使用non-member方法,我只需要包含需要的方法声明就好了。因此,non-member降低编译的依赖关系。举例来说,member方法,需要一点东西也要把整个class包含进来,而整个class中又关联其他东西,导致当前需要的东西与其他东西的依赖。如果是non-member方法,相当于把整个class分成一个一个小块,需要那个小块,就包含哪个小块。这是因为class 的定义不能跨越多个源文件,而namespace可以跨越多个源文件。
最新文章
- zTree 循环树
- Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels.
- ScheduleThreadPoolExecutor的工作原理与使用示例
- Android学习笔记之Fast Json的使用
- openfalcon客户端自定义push 传输到transfer
- 7、SQL基础整理(子查询)
- 归档-ios
- Java client 访问 memcached
- string应用
- JDK安装配置与升级
- Multiscale Combinatorial Grouping 学习和理解源代码(一)
- .NET(C#):觉察XML反序列化中的未知节点
- 直接粘贴代码到网络上:command-line pastebins
- JAVA中的基本数类型据
- 状压dp初探
- 修改Java程序的进程名
- SpringMVC整合freeMarker实现页面静态化+SpringMVC配置多视图
- [leecode]---11.container with most water
- .Net Core Nlog日志记录到MySql
- 使用docker部署ambari的若干要点
热门文章
- Android开发之使用AlertDialog创建对话框,单选框和多选框
- ListView使用CursorAdapter增加和删除item
- poj 1159 Palindrome(dp)
- poj 1753 Flip Game 枚举(bfs+状态压缩)
- bzoj1854
- 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
- [OFBiz]开发 一
- POJ 2955 Brackets 区间合并
- 【原创】alias与export
- HDU-4628 Pieces 搜索 | DP