下载此文档

《Effective-C++》读书笔记.docx


文档分类:IT计算机 | 页数:约29页 举报非法文档有奖
1/29
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/29 下载此文档
文档列表 文档介绍
导读 Introduction
1.   所谓declaration,是用来将一个object、function、class或template的类型告诉编译器,它不带细节信息。所谓definition,是用来将细节信息提供给编译器。对object而言,其定义式是编译器为它配置内存的地点;对function或function template而言,其定义式提供函数本体function body;对class或class template而言,其定义式必须列出该class或template的所有members。
2.   所谓default constructor是指不需任何参数就可被调用的constructor,不是没有任何参数,就是每个参数都有默认值。通常在定义对象数组时,就会需要一个default constructor。如果该类没有提供default constructor,通常的做法是定义一个指针数组,然后利用new将每个指针一一初始化;在该方法无效的情况下,可以使用placement new方法。
3.   所谓copy constructor是以某对象作为另一同种类型对象的初值,或许它最重要的用途就是用来定义何谓以by value方式传递和返回对象。事实上,只要编译器决定产生中介的临时性对象,就会需要一些copy constructor调用动作,重点是:pass-by-value便意味着调用“copy constructor”。
4.   初始化initialization行为发生在对象初次获得一个值的时候。对于带有constructors的classes或structs,初始化总是经由调用某个constructor达成。对象的assignment动作发生于已初始化的对象被赋予新值的时候。纯粹从操作观点看,initialization和assignment之间的差异在于前者由constructor执行,后者由operator =执行。C++ 严格区分此二者,原因是上述两个函数所考虑的事情不同:constructors通常必须检验其参数的有效性,而大部份assignment运算符不必如此,因为其参数已经构造完成,必然是合法的。另一方面,assignment动作的目标对象并非是尚未建构完成的对象,而是可能已经拥有配置得来的资源。在新资源可被赋值过去之前,旧资源通常必须先行释放。
5.   C++的两个新特征:
bool类型:其值不是true就是false,语言内建的关系运算符、条件判断式的返回类型都是bool。若编译器尚未实现该类型,有两种选择:
enum bool { false, true };
bool与int是不同类型,允许bool与int间的函数重载,但内建关系运算符依然返回int;
typedef int bool;
const bool false = 0;
const bool true = 1;
bool与int成为同种类型,兼容于传统的C/C++语意,移植到支持bool的平台上后行为不变,但不允许int与bool间的函数重载;
四个转型运算符:static_cast、const_cast、dynamic_cast、reinterpret_cast。它们更容易在程序代码中被识别出来,编译器更容易诊断出错误的运用。
2002-6-23
改变旧有的C习惯   Shifting from C to C++
C基本上只是C++的一个子集,其许多技巧在C++中已经不合时宜。例如以reference to pointer取代pointer to pinter。某些C习惯用法与C++的精神相互矛盾。
条款1:尽量以const和liline取代#define(以compiler取代preprocessor)
理由1: #define定义的常量名称可能在编译之前就被preprocessor移走,因此不会出现于symbol table中,从而就没有机会被编译器看见。这样的结果是会给debug工作带来不便。不如改用const定义常量。
理由2: #define实现的带有实参的宏,虽然不必付出函数调用所需的成本,但用户使用时极易出错。不如使用inline function。
,如:const char * const authorName = “Scott Meyers”。
,即一个const static member,要注意在implementation文件中定义它。
,因为#include、#ifdef、#ifudef在编译控制过程中还扮演着重要角色。
条款2:尽量以<iostream

《Effective-C++》读书笔记 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数29
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xunlai783
  • 文件大小63 KB
  • 时间2017-12-26
最近更新