Effective C++读书笔记(14)

条款21:必须返回对象时,别妄想返回其reference

当函数要返回一个对象时,不要返回pointer或者reference指向local stack对象,会返回一个未定义的pointer或reference;也不要返回reference指向一个heap-allocated对象,会造成内存泄露;也不要返回pointer或者reference指向local static对象,在需要多个对象时会造成对象被覆盖而丢失原来的数据。总之,在返回对象时就直接一个新对象(pass by value)。

条款22:将成员变量声明为private

为什么采用private的原因:1、语法一致性:客户访问class成员时不需要记住是否该使用小括号;2、访问控制:使用函数可以让你对成员变量的处理有更精确的控制:可以控制他的读写性;3、封装性:将成员变量隐藏在函数接口的后面,可以为“所有可能的实现”提供弹性,确保class的约束条件总是会获得维护并且保留了日后变更实现的权利。

protected满足“语法一致性”和“访问控制”,但是并不比public更具有封装性。(封装性与“其内容改变时可能造成的代码破坏量”成反比,所谓改变也许是从class中移除它

public,protected,private的访问范围:private:该类中的函数,其友元函数;protected:该类中的函数,子类中的函数,友元函数(不能被该类的对象访问);public:该类中的函数,子类的函数,友元函数,该类的对象;

类继承后方法属性的变化:private属性不能被继承。

使用private继承,父类的protected和public在子类中变为private。

使用protected继承,父类的protected和public在子类中变为protected。

使用protected继承,父类的protected和public在子类中不变。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值