博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【23】宁以non-member、non-friend替换member函数
阅读量:4940 次
发布时间:2019-06-11

本文共 594 字,大约阅读时间需要 1 分钟。

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

转载于:https://www.cnblogs.com/nzbbody/p/3543414.html

你可能感兴趣的文章
Node.js 教程
查看>>
windows系统和centos双系统安装引导项修改
查看>>
理解数据类型与数学运算:求和、温度转换
查看>>
kernel panic 分析(camera导致的mem越界)
查看>>
文档流
查看>>
xcode加载静态链接库.a文件总是失败
查看>>
加密签名
查看>>
7.volatile关键字
查看>>
【转载】古典密码
查看>>
python性能优化
查看>>
软件工程的意义
查看>>
如何在Oracle 10g中跟踪SQL
查看>>
android IOC框架学习记录
查看>>
CDOJ 1279 班委选举 每周一题 div2 暴力
查看>>
HDU 5745 La Vie en rose 暴力
查看>>
Day12 线程池、RabbitMQ和SQLAlchemy
查看>>
jQuery中$.each()方法的使用(从业人员项目--添加产品和修改产品,定价时用到了)...
查看>>
《算法导论》第六章----优先级队列(代码实现+部分练习)
查看>>
《Linux/Unix系统编程手册》读书笔记3
查看>>
10·
查看>>