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可以跨越多个源文件。

最新文章

  1. zTree 循环树
  2. Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels.
  3. ScheduleThreadPoolExecutor的工作原理与使用示例
  4. Android学习笔记之Fast Json的使用
  5. openfalcon客户端自定义push 传输到transfer
  6. 7、SQL基础整理(子查询)
  7. 归档-ios
  8. Java client 访问 memcached
  9. string应用
  10. JDK安装配置与升级
  11. Multiscale Combinatorial Grouping 学习和理解源代码(一)
  12. .NET(C#):觉察XML反序列化中的未知节点
  13. 直接粘贴代码到网络上:command-line pastebins
  14. JAVA中的基本数类型据
  15. 状压dp初探
  16. 修改Java程序的进程名
  17. SpringMVC整合freeMarker实现页面静态化+SpringMVC配置多视图
  18. [leecode]---11.container with most water
  19. .Net Core Nlog日志记录到MySql
  20. 使用docker部署ambari的若干要点

热门文章

  1. Android开发之使用AlertDialog创建对话框,单选框和多选框
  2. ListView使用CursorAdapter增加和删除item
  3. poj 1159 Palindrome(dp)
  4. poj 1753 Flip Game 枚举(bfs+状态压缩)
  5. bzoj1854
  6. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
  7. [OFBiz]开发 一
  8. POJ 2955 Brackets 区间合并
  9. 【原创】alias与export
  10. HDU-4628 Pieces 搜索 | DP