您的位置:首页 > 编程语言 > C语言/C++

effective c++学习笔记

2015-12-21 11:23 267 查看

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

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

         C:

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

             指针等初始化等;

         C++:

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

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

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

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

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

        建议:

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

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

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

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

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

         建议:

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

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

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

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

         建议:

         可将相应的成员函数声明为private的,但是不实现该函数。如boost库中noncopyable基类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: