Effective C++ 随笔 2

3.尽量避免在public接口出现数据成员
这样可以防止在成员函数的类外对数据成员进行读写。

4.在以下几种情况下尽量使用const
cosnt主要用于防止数据成员被修改

  1. 用于读取数据成员的成员函数可以加const声明为常成员函数
  2. 如果函数的参数不希望被修改,可以加const

5.函数参数尽量用"传引用",而不用"传值"
这样做主要有两个好处:

  1. 引用是变量和对象的别名,与实参共用一段内存空间,这样就可以避免传值时的形参所带来的内存复制
  2. 当参数是类对象时,传引用可以避免对象的复制,这样就能避免不必要的构造函数和析构函数的调用,有利于提高效率。

6.千万不要返回局部对象的引用,也不要返回函数内部用 new 初始化的
指针的引用

  1. 局部对象的生命空间是有效的,在离开函数后,函数内部所有的局部对象将被销毁。因此,如果返回局部对象的引用,那个局部对象其实已经在函数调用者使用它之前被销毁了。
  2. 在函数内部用new初始化后的指针在函数的最后必须释放掉,不然会造成内存泄漏,但释放掉的指针就不能返回引用了,如果不释放返回其引用就会引起内存泄漏。

7.尽可能推迟变量的定义
这样做主要有以下两个好处:

  1. 在使用才定义变量有利于提高代码的可读性
  2. 可以提高代码的运行效率
    如下代码所示:
class A
{
........//省略
private:
  int _var =0;
}
A& getCopy(const A & a)
{
 //   A b;           (1)
    if(a._var ==0)
    return null;
    A b;          (2)
    b._var = a._var;
    return b;
}

如果在(1)出定义对象b,不管if中的条件满不满足,都会先调用类A的构造函数对其进行初始化。但如果在(2)处定义对象b,当if中的条件不满足时,就不用调用类A的构造函数对其进行初始化,也就不用调用析构函数,这样就可以少调用一次构造函数和析构函数。

7.变量必须初始化

参考:Effective C++

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值