effective c++学习笔记

条款04确定对象被使用前已被初始化

         这应该是一个开发人员的一种习惯,虽然赋值过程会带来执行时的时间消耗,但与出现不可预知的错误相比,是值得我们去做的。

         C:

             对一些字符数组赋初始化值,可以避免字符串结束符‘\0’带来的问题;

             指针等初始化等;

         C++:

              初始化:对象的成员变量的初始化动作发生在进入构造函数本地之前。

              赋值:赋值=,可能会调用拷贝函数等。

              C++中利用构造函数成员初始化列表要比在构造函数中调用赋值(=)进行赋值效率要高。

              成员函数的初始化的顺序为:基类早于派生类成员。其他成员按照其声明顺序初始化变量。

              Static成员会在main函数结束时会自动调用析构函数。

        建议:

              为内置型对象进行手工初始化,c++无法保证会初始化他们。

              构造函数最好使用成员初值列。

              以避免”跨编译单元初始化秩序“问题,建议用localstatic对象代替non-local static对象。

条款05了解C++默默编写并调用哪些函数

         注意引用类型和常量类型是无法改变的。

         建议:

         一个空类所占内存1字节。

         默默编写的函数有,默认构造函数、默认拷贝函数、默认赋值拷贝函数、默认析构函数。

条款06若不想使用编译器自动生成的函数,就该明确拒绝

         有时不想使用默认拷贝函数、默认赋值拷贝函数,可以按照下面的建议去做。

         建议:

         可将相应的成员函数声明为private的,但是不实现该函数。如boost库中noncopyable基类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值