《Effective-C++》读书笔记

《Effective-C++》读书笔记

ID:43131614

大小:405.10 KB

页数:30页

时间:2019-09-27

《Effective-C++》读书笔记_第1页
《Effective-C++》读书笔记_第2页
《Effective-C++》读书笔记_第3页
《Effective-C++》读书笔记_第4页
《Effective-C++》读书笔记_第5页
资源描述:

《《Effective-C++》读书笔记》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、导读Introduction1.所illdeclaration,是用來将一个objectsfunctionsclass或template的类型告诉编译器,它不带细节信息。所il7definition,是用來将细节信息提供给编译器。对objec〔而言,其定义式是编译器为它配置内存的地点;对function或functiontemplate而音,其定义式提供函数木体functionbody;对class或classtemplate而吉,其定义式必须列出该class或template的所冇memberso2.所谓defa

2、ultconstructor是指不需任何参数就可被调用的constructor,不是没有任何参数,就是每个参数都有默认值。通常在定义对象数组时,就会需要一个defaultconstructor.如果该类没有提供defaultconstructor,通常的做法是定义一个指针数组,然后利用new将每个指钊初始化;在该方法无效的情况下,可以使用placementnow方法。3.所谓copyconstructor是以某对象作为另一同种类型对象的初值,或许它最重要的用途就是用来定义何谓以byvalue方式传递和返回对象。事实

3、上,只要编译器决定产生中介的临时性对象,就会需要一些copyconstructor调用动作,重点是:pass-by-value便意味着调用"copyconstructor”。4.初始化initialization行为发纶在对彖初次获得一个值的时候。对丁-带冇constructors的classes或structs,初始化总是经由调用某个constructor达成。对彖的assignment动作发⑴了已初始化的对彖被赋予新值的时候。纯粹从操作观点看,initialization和assignmentZ间的差异在丁-前

4、者由constructor执行•,后者由operator=执行。C++严格区分此二者,原因是上述两个函数所考虑的事情不同:constructors通常必须检验其参数的冇效性,而人部份assignment运算符不必如此,因为其参数己经构造完成,必然是合法的。另一方面‘assignment动作的目标对象并非是尚未建构完成的对彖,而是可能已经拥冇配置得來的资源。在新资源可被赋值过去之前,旧资源通常必须先行释放。5.C++的两个新特征:bool类型:其值不是true就是false,语言内建的关系运算符、条件判断式的返回类型

5、都是bool。若编译器尚未实现该类型,冇两种选择:enumbool{false,true);bool与int是不同类型,允许bool与int间的函数重载,但内建关系运算符依然返回int;typedefintbool;constboolfalse=0;constbooltrue=1;bool与int成为同种类型,兼容于传统的C/C++语意,移植到支持bool的平台上后行为不变,但不允许int与bool间的函数重载;四个转型运算符:staticcast、constcast、dynamiccast^reinterpret

6、cast。它们更容易在程序代码中被识别出来,编译器更容易诊断出错谋的运用。2002-6-23改变旧有的C习惯ShiftingfromCtoC++C基本匕只是C++的一个子集,其许多技巧在C++中己经不合时宜。例如以referencetopointer取代pointertopintero某些C习惯用法与C++的精神相互矛盾。条款1:尽量以const和liline取代#define(以compiler取代preprocessor)理由1:#dcfinc定义的常杲名称LJ能在编译Z前就被preprocessor移走,因此

7、不会出现于symboltabic屮,从而就没有机会被编译器看见。这样的结果是会给debugT.作带来不便。不如改用const定义常量。理由2:#define实现的带有实参的宏,虽然不必付出函数调用所需的成本,但用户使用时极易出错。不如使用inlinefunctiono注意1.常量指针的定义,如:constchar*constauthorNarne=**ScottMeyers'注意2.class专属常量,即一个conststaticmember,要注意在implementation文件中定义它。注意3.不能完全舍弃

8、preprocessor.因为#include、#ifdef、#ifudef在编译控制过程中还扮演着重要角色。条款2:尽量以viostream>取代<stdio.h>尽管scanf和printf可移植而只高效率,但是它们家族都还不够完美。尤其是它们都不具备type-safe性质,也都不可扩充。而typesafety和extensibility正是C++的基石

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。