Effective C++读书笔记
--By Nathan.Yu 2007-11-10--
0
导读
1、设计策略
如何在两个不同的做法中择一完成某项任务,如
该选择inheritance(继承)还是templates(模板)?该选择public继承还是private继承?该选择private继承还是composition(复合)?该选择member函数还是non-member函数?该选择pass-by-value还是pass-by-reference?….
什么是assignment操作符的适当返回类型?何时该令析构函数为virtual?当operator
new无法找到足够的内存时该如何行事?…..
2、术语
声明式(declaration):告诉编译器某个东西的名称和类型,但略去细节。如
extern int x;
std::size_t numDigits(int number);
/*
std::size_t,表示类型size_t位于命名空间std内。而继承自c动符号(如size_t)有可能存在于global作用域或std内,甚至两个兼具,取决于哪个头文件被含入(#included).
每个函数的声明揭示其签名式(signature),也就是参数类型和返回类型。如,numDigits函数的签名是std::size_t
(int)。但c++对签名的官方定义并不包含返回类型。
*/
class Widget;
template<typename T> class GraphNode;
定义式(definition):告诉编译器声明式所遗漏的细节。对对象而言,定义式是编译器对此对象拨发内存的地点;对function或function
template而言,定义式提供了代码本体;对class或class template而言,定义式列出它们的成员。
初始化(Initialization):“给予对象初值”的过程。对用户自定义的类型的对象而言,初始化由构造函数执行。
default构造函数:是一个可被调用而不带任何实参的类成员函数。这样的构造函数要不没有参数,要不就是每个参数都有缺省值。
explicit构造函数:可以阻止它们被用来执行隐式类型转换(implicit
type conversions),但可显式转换(explicit type conversions)。被声明为explicit第构造函数通常比其non-explicit兄弟更受欢迎,因为他禁止编译器执行预期(往往是不期望)的类型转换。把构造函数声明为explicit!
copy构造函数:以同型对象初始化新自我对象。
copy assignment操作符:从一个同型对象中拷贝其值到另一个自我对象。
pass-by-value:意味“调用copy构造函数”。以by-value传递用户自定义类型通常是个坏主意,pass-by-reference-to-const往往是比较好的选择。
STL:标准模板库(Standard Template Library),包含容器(如vector,
list, set, map等等)、迭代器(如vector<int>::iterator, set<string>::const_iterator等等)、算法(如for_each,
find, sort等等)机能。
函数对象(function objects):行为像函数的对象,这样的对象来自于重载operator()(function
call 操作符)的classes。
行为没有定义:你无法稳定预估运行期会发生什么事。如
int* p = 0;
std::cout << *p; //对一个null指针取值会导致不明确行为。
接口(interface):Java和.NET语言都提供Interfaces为语言元素,但c++没有。
客户(client):某人或某物,他(或它)使用你的代码(通常是一些接口)。一般指程序员。
3、TR1和Boost
TR1(Technical Report 1):一份规范,描述加入C++标准程序库的诸多新机能。这些机能以新的class
templates 和 function templates形式体现,有hash tables, reference-counting smart pointers, regular expressions等,所有TR1组件都被置于命名空间tr1中,tr1则位于std内(即std::tr1)。
Boost是个组织,提供可移植、同僚复审、源码开放的c++程序库。大多数TR1机能是以Boost的工作为基础的。Boost提供比TR1更多的东西。
TR1与Boost的关系:
分享到:
相关推荐
effective c++读书笔记和总结 effective c++读书笔记和总结
effective C++读书笔记,effective C++读书笔记,effective C++读书笔记
c++笔记,很不错的哦,喜欢大家喜欢!。。。。。。
~$阅读笔记.doc————电子版_doc版
C++Primer中文第三版(C++从入门到精通)第一章的读书笔记,主要是C++程序、预处理器指示符、iostream库等的基础知识点读书笔记。
C++基础的学习笔记(其中的代码源件可私信留言) C++中的空头程序 使用C++书写hello world 学习变量 学习常量 标识符命名规则 数据类型 运算符 程序流程结构 数组 函数 指针 结构体
读书笔记 -复盘——把经验转化为能力.pdf
effective C++ 很好 很不错 最好的C++进阶资料
摘录了《Effective C++》 (Scott Meyers 著)中有参考价值的编写代码建议,方面阅读
C++笔记——iNotes
Effective C++学习笔记 没有时间看Effictive C++书的人可以看看这个笔记 总结出了重点啊 适合有c++基础的人阅读
——————————————————————————————————————————————
内容简介:有人说C++程序员可以分为两类,读过Effective C++的和没读过的。当您读过《Effective C++:改善程序与设计的55个具体做法(第3版)(中文版)(双色)》之后,就获得了迅速提升自己C++功力的一个契机。
《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...
自己整理的侯捷版本<<Effective C++ 改善程序与设计的55个具体做法>> 学习笔记.
C++整理笔记word版 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。是01 C++学习笔记的后续补充 内存分区模型 引用 函数提高 类和对象 文件操作
Allegro学习笔记之6——热风焊盘Allegro学习笔记之6——热风焊盘
Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...
effective c++笔记1