Effective C++(四)设计和声明

一 让接口更容易被正确使用,不易被误用:

(1)“促进接口正确使用”的方法:接口的一致性以及与内置类型的行为兼容。

(2)“阻止误用”的方法:建立新类型、限制类型上的操作、束缚对象值以及消除客户的资源管理责任。

(3)tr1::shared_ptr支持定制的删除器(仿函数),可用来自动解除互斥锁等。


二 设计class犹如设计type:

*应该和语言设计者当初设计语言内置类型一样的谨慎来研讨class的设计。


三 宁以pass-by-reference-to-const替换pass-by-value:

(1)尽量以pass-by-reference-to-const替换pass-by-value。前者:高效;可避免对象切割问题。

(2)上述规则不适用于内置类型,以及STL的迭代器和函数对象。对于它们,pass-by-value往往比较适当。


四 必须返回对象时,别妄想返回其reference:

(1)绝不要返回pointer或reference指向一个local stack对象。

(2)绝不要返回reference指向一个heap-allocated对象。

(3)绝不要返回pointer或reference指向一个local static对象而有时可能同时需要多个这样的对象。


五 将成员变量声明为private:

(1)将成员变量声明为private的好处:一致性;可细微划分访问控制、封装性(更大实现弹性)。

(2)从封装角度看,其实只有两种访问权限:private(提供封装)和其他(不提供封装)。protected并不比public更具封装性。


六 宁以non-members、non-friend替换member函数:

*宁以non-members、non-friend替换member函数:可以增加封装性、包裹弹性(packaging flexibility)和机能扩充性。


七 若所有参数都需要类型转换,请为此采用non-member函数:

(1)只有参数被列于函数的参数列内,这个参数才是隐身转换的合格参与者。

(2)如果需要为某个参数的所有参数进行类型转换,那么这个函数必须是个non-member(member函数的*this不在参数列表,不是隐式转换的合格参与者)。


八 考虑写出一个不抛异常的swap函数:

待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值