Effective C++读书笔记
--By Nathan.Yu 2007-11-12--
1 让自己习惯C++(三)
条款04:确定对象被使用前已先被初始化
读取未初始化的值会导致不明确的行为。
最佳的处理方法:永远在使用对象之前先将它初始化。
对内置类型:手工初始化。
对自定义类型:确保每个构造函数都将对象的每一个成员初始化。
别混淆了赋值(assignment)和初始化(initialization)。
1、
成员初始化何时发生?
C++规定,对象的成员变量的初始化发生在进入构造函数本体之前。使用member
initialization list(成员初值列表)替换在构造函数体中的赋值动作。
2、
为什么使用初始化列表效率较高?
初始化列表避免了先调用成员的default构造函数这一多余的过程。
3、
内置类型成员应选用初始化列表还是赋值进行初始化?
内置类型的“赋值表现像初始化一样好”,但为了一致,最好也通过成员初始列表来初始化内置类型。
【要点摘录】请立下规则:规定总是在初值列表中列出所有成员变量,以免还得记得哪些成员变量(如果它们在初值列表中被遗漏的话)可以无需初值。
4、
何时内置类型成员变量必须使用初值列表初始化?
当它们是const或references时,它们就一定需要初值,不能被赋值。
5、
有多个构造函数,且成员较多时怎么办?如何初始化?
在这种情况下,可以合理的在初值列表中遗漏那些“赋值表现像初始化一样好”对成员,改用它们的赋值操作,并将那些赋值操作移往某个函数(通常是private),共所有构造函数调用。这种做法在“成员变量的初值系由文件或数据库读入”时特别有用。
6、
成员的初始化顺序如何?
C++有十分固定的初始化次序:base
classes更早于其derived classes被初始化,而classes当成员变量总是以其声明的次序初始化。
【要点摘录】为避免你或你的检阅者迷惑,并避免某些可能存在的晦涩的错误,当你在初始化列表中以声明的次序初始化各成员。
7、
static对象有哪些?
所谓static对象,其寿命从被构造出来直到程序结束为止,因此stack和heap对象都被排除。这种对象包括:global对象;定义于namespace作用域内的对象;在classes内、在函数内、以及在file作用域内被声明为static的对象。其中,函数中的static对象称为local
static对象,其他static对象称为non-local static对象。static对象的析构函数会在main函数结束时被自动调用。
8、
什么是编译单元?
所谓编译单元(translation unit),是指产出单一目标文件的那些源码。基本上它是单一源码文件加上其所含入的头文件。
【要点摘录】C++对“定义于不同编译单元内的non-local
static对象”的初始化次序并无明确定义。
【要点摘录】C++保证,函数内的local
static对象在“该函数被调用期间”“首次遇上该对象之定义式”时被初始化。
请记住:
1、为内置型对象进行手工初始化,因为C++不保证初始化它们。
2、构造函数最好使用成员初值列表,而不要在构造函数体内使用赋值操作。初值列表列出的成员变量,其排列次序该和它们在class中的声明次序相同。
3、为免除“跨编译单元之初始化次序”问题,请以local
static对象替换non-local static
对象。(使用reference-returning函数)。
分享到:
相关推荐
effective c++读书笔记和总结 effective c++读书笔记和总结
effective C++读书笔记,effective C++读书笔记,effective C++读书笔记
effective C++ 很好 很不错 最好的C++进阶资料
《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...
内容简介:有人说C++程序员可以分为两类,读过Effective C++的和没读过的。当您读过《Effective C++:改善程序与设计的55个具体做法(第3版)(中文版)(双色)》之后,就获得了迅速提升自己C++功力的一个契机。
Effective C++学习笔记 没有时间看Effictive C++书的人可以看看这个笔记 总结出了重点啊 适合有c++基础的人阅读
effective c++笔记1
Effective C++笔记1
摘录了《Effective C++》 (Scott Meyers 著)中有参考价值的编写代码建议,方面阅读
自己整理的侯捷版本<<Effective C++ 改善程序与设计的55个具体做法>> 学习笔记.
Effective_C++_3rd 读书笔记 pdf
Effective C++ Roy T 读书笔记,比较老的一本书,探讨一下C++。
C++ Effective STL笔记,供C++初学者学习参考。。。。。
经典书籍 effective c++的学习笔记,一共31页,总结的很好,基本上是把原书的精华内容再加上自己的理解写在了这份文档中,适合打印出来细看。
通常C++要求你对所使用的任何东西提供一个定义式,但如果它是个class专属常量 又是static且为整数类型(integral type,例如int,char,bool),则可特殊处理。只要不取它们 的地址,你可以声明并使用它们而无需提供...
深入探索C++对象模型,Effective STL,more effective c++,C陷阱与缺陷,都是阅读笔记
c++笔记学习心得笔记,年多的C++学习过程中,自己阅读了很多C++经典著作,有《effective c++》,《more effective c++》,《c++ primer》等,每次阅读著作都会总结一些心得,现在拿出来和大家分享一下。
Effective C++_中文版. 数据C++中的高级进阶类书籍,本文档可以复制,非影印版