C++99个常见错误

5星(超过95%的资源)
所需积分/C币:42 2012-10-27 16:12:42 5.89MB PDF
1
收藏 收藏
举报

学习C++有用的,以前在网上下的,与大家共享,一起学习哈
目录 目录 技术翻译:一种笔记体的创作尝试(译者序) 中英文术语对照表 前言 致谢 第一章基础问题 常见错误:过分积极的注释 常见错误:幻数 常见错误:全局变量 常见错误:未能区分函数重载和形式引数默认值 常见错误:对引用的认识误区 常见错误:对常量(性)的认识誤区 常见错误:无视基础语言的精妙之处 常见错误:未能区分可访问性和可见性 常见错误:仗用糟糕的语言 常见错误:无视(久经考验的)习惯用法 常见错误:聪明反被聪明误 常见错误:嘴上无毛,办事不牢 第二章语法问题 常见错误:数组定义和值初始化的语法形式混淆 常见错误:提摸不定的评估求值次序 常见错误:(运算符)优先级问题 常见错误:for语句引发的理解障碍 常见错误:取大优先解析原则带来的问题 常见错误:声明饰词次序的小聪明 常见错误:“-数还是对象”的多义性 常见错误:效果漂移的型别量化词 常见错误:自反刘始化 常见错误:静态连接型别和外部连接型别 常见错误:运算符函数名字查找的反常行为 常见错误:晦涩难懂的 operator-> 第三章预处理器问题 常见错误:使用# define定义的字面量 常见错误:使用# define定义的伪函数(函数宏) 常见错误:#if的滥用 常见错误:断言( assert宏)的副作用 第四章型别转换问题 常见错误:以Void实为型别转换的中介型別 常见错误:截切问题 常见错误:对日标型别为指涉物为常量的指针型别的犁别转的认识误区 常见错误:对以指涉物为指涉到常量的指针型别的型别为目标型别的型别转换的认识误区 常见错误:对以指涉物为指涉到基类型别的指针型别的型别为目标型别的型别转换的认识误区 常见错误:指涉到多维数组的指针带米的问题 常见错误:未经校验的向下转型 常见错误:型别转换运算符的误用 常见错误:始料未及的构造凶数型别专换 常见错误:在多继承条件下进行强制型别转换 常见错误:对非完整型别徹强制型别转 常见错误:旧式强制型转换 常见错误:静态强制聖别转换 常见错误:形式引数引发临时对象生成的始化 常见错误:临时对象的生存时域 常见错误:引用和临时对象 常见错误:(动态强制型别转换运算符)dyη amac cast带来的多义性解析失败 常见错误:对逆变性的误解 第五章初始化问题 常见错误:赋值与初始化混淆 常见错误:位于非适当辖域的变量 常见错误:未能意识到语言中复制操作的固守行为 常见错误:按位复制的c1ass对象 常见错误:未能区分构造函数中的初始化和赋值 常见错误:未能在成员初始化列表中保持次序一致性 常见错误:对于虚基类(了对象)进行默认初始化 常见错误:复制构造函数对基类子对象初始化的未预期行为 常见错误:运行期静态初始化次序 常见错误:直接复訇初始化 常见错误:对引数的直接初始化 常见错误:无视返回值优化 常见错误:在杓造函数中初始化静态(数捱)成员 第六章内存和资源管理问题 常见错误:未能区分纯量与数组的内存分配机制 常见错误:内存分配失败校验 常见错误:(用自定义版本)替换全局的内存管理运算符(所调用的函数) 常见错误:成员版本的 operator new和 operator delete的辖域和调用机制混淆 常见错误:抛出字符串字面常量(作为异常对象) 常见错误:未能王确理解和利用异常处理机制 常见错误:滥用局部量地址 常见错误:未能采用 (资源获取初始化)丬惯用法 常见错误:对auto_ptr的误用 第七章多态问题 常见错误:型别特征码 常见错误:将基类析构区数声明为非虚函数 常见错误:对非虚(成员)函数的遮掩 常见错误:(以)过分灵活的(方式滥用〕模板方法设计模式 常见错误:重载虚函数 常见错误:为引数指定默认初始化物的虚函数 常见错误:在构造函数和析构函数中调用虚数 常见错误:虚赋值 常见错误:未能区分(函数的)重载、改写和遮掩 常见错误:未能深入理解虚函数和改写的实现机制 常见错误:支配原则议题 第八章型别设计问题 常见错误:取/设状态接口 常见错误:常量和引用数据成员 常见错误:未能理解常量成员函数 常见错误:未能区分强聚合和弱聚合 常见错误:非适当的运算符重载 常见错误:(运算符)优先级和車载 常见错误:友元成员运算符 常见错误:自增/自减运算符的问题 常见错误:对模板化的复制操作的认识误区 第九章继承谱系设计问题 常见错误:持有C1ass对象的数组 常见错误:非這当的容器型别之可替换性 常见错误:未能理解 protected访问层级 常见错误:为代妈复用而以pub1ic方式继承 常见错误:以pub1ic方式继承具象类 常见错误:未能运用继承谱系的退化形式 常见错误:继承的滥用 常见错误:依型別分派的控制结构 常见错误:单根谱系 常见错误:向C1ass对象打探隐私 常见错误:权能查询问题 引用书目 技术翻译:一种笔记体的创作尝试(译者 序) 经过近一年的工作,这本近四百页的小册子终于和大家见面了。 这木书从一个读者的角度来看,当然主要地可以视为是对于当之无愧的大师 在近十五年前原创的一本技术书籍的译作。但如果从译者的本意出发,它未尝不 可以说是我本人十年米学习、领悟和运用的一个小结。年起,我开始陆 续在论坛中发表一些零碎的技术文章和翻译作品,并在企业和大学里作了一些演讲。和真正 的一线工程师,以及即将踏上工程师岗位的同道们作了一些比较深入的交流之后,我才真真 切切地感受到他们对于书本知识转化为貞止实力的那种热切的渴求。现在每年出版的有关 的书籍车载斗量,但是如何能把这些“知识”尽可能多地转化成工稈师手中对付真正的 项目需求的“武器”?我感到自己负有责任米做一些工作,米对这个问题做出自己尝试性的 解答。那末,最好的方式是创作一本新书吗?经过再三的权衡,我认为并非如此。作为一个 未在 戌是 上发表过任何文字的人,原创很难企及自己欲达成 的号召力。并且,原创的话就意味着要自己照顾切技术细节,我还决没有自大到认为已经 有了那种实力的程度。可是,是否仅仅再去翻译一本新的著作呢?那也不是。近几 年来已不比往旹,新著作的翻译效率简直髙得惊人,但单纯的翻译工作其实并不能消释读书 人的费解。那末,我就想到:为什么不能挑选一本书,一方血将它翻译过来,另一方血以它 作为“蓝本”,将自己的见解以笔记的形式融入其文字,并引导读者参读其它的技术书箸呢? 对于某个特定的技术细节,我希望达到的效果是:读者能够从我的翻译这“小小的隅” 延拓开去,从深度而言他们能够参阅其它专门就此发力的技术资料,获得某种技术或习惯用 法的历史背景、推导逻辑、常见形式等翔实、全面、准确的信息;从广度而言,他们可以了 解到编码与设计、细芍与全局的关系,从而做到取舍中见思路、简化中智慧,真正地把 这种优秀的、有着长久生命力的程序设计语言背后的有关软什工程的科学和艺术的成分 提炼”出米,化为自己实实在在的内功提升。这样的工作,我认为才是有它的价值在的, 也是我这些年来下苦功夫硏读了一二十种的高质量书籍,以及使用交付了一些成 功的工程之后有实力完成的—这就是我创作本书的初衷和原动力—以技术翻译为主体, 并进行“笔记体”的再创作予读者以诠释和阅读参考的附加值,这就是我的答案。 不过,选取这样的一本作为“蓝本”的书籍殊非易事。首先,它本身需要有相当的深度和丿 度,否则难以闻面俱到,从而也就难以体现语言在各个层次上的大能。其次,它必须有 相当的发散性,否则它就难以和已有的大量资料相结合,难以引导读者去重读他们之间已经 看过,但未能充分珒解的资料。再次,它还要有明确的主题组织,否则很可能会陷入空谈, 使读者感觉难以理解和掌握,从而不能发挥应有的“知识”向“实力”的转化之效。最后, 落入我的视线,研读数次之后,我觉得它不仅完全符合“蓝本”的一切要求, 并且 大师还在数个方面给予了我太多的启迪:这本书所有的章节都从 个众所周知的、在日常编码或设计实践经常遭遇的问题入手,先是就事论事地指出其不足, 再是对其背后思想中存在何种合理与不合理之处深入剖析,最后取之精华弃之糟粕,给出一 个简洁、通用、美轮关奂的方案。有的条款中,大师会给出数种不同的解决之道,并一一评 点其优劣之处,指出其适用场合;有的条款中,大师步步推进,先是给出一个去除错误的解, 再进一步地优化它,直至与某种习惯用法和改计模式接壤作为点题之笔。从翻译的过程中, 我自己真的是受益良多,希望我的读者能够收获更大。 在本书的翻译中,清华大学出版社的龙启铭编辑给予了我很大的帮助和鼓励,并促成这本书 最终亢稿。微软亚洲研究院的徐宁研究员和中国的柴可大工程师通读了全书,并给予 了仝面的审阅意见,包括不少技术和文字的问题,在此向他们深深致谢。另外, 总部的 经理、上海交通大学计算机系的张尧弼教授 中国的唐文蔚高级⊥程师、谷歌中国的龚理匚程师、微软亚洲工程院的魏波⊥程师 微软全球技术中心的陈曦工程师和中国的劳佳工程师也都在本书写作的过程中给了我 不小的帮助,在此一并致谢。当然,书中的错误和纰漏在所难免,这些理应由我本人负全部 贲任。另外要感谢的还有我的家人和同事们,没有你们的支持,我不可能坚持到底。希望木 书的出版能够给你们带来快乐。 高博 年月 于微软亚洲工程院上海分院 中英文术语对照表 木书中对于句式的调整可谓大刀阔斧,唯求以中文的最佳方式完整地传达作者原意为准。为 补足于原文中略去而实际上对阅读有影响的部分,尚有人量内容以括弧补辑形式直接添入原 文。而本书对于术语的运用则如临深渊、如履薄冰。对于术语的准确、统·翻译方面,绝不 敢造次,或妄自发明新术语。所有的术语皆参考了大量出版物中的使用频率和习惯,以及酌 情采用更权威、醒目的台湾地区译法而成,力求准确、醒目和统一。如“对象”一词,已经 为大陆以压倒性习惯采为英文“ 之译法,尽管多有不备之嫌,也只得从众。但“引 数”一词,则坚持使用台湾译法。盖因“参数”一词太过模糊(是应用程序的配置参数,还 是数学上的参数方程之“参数”?),指“在函数调用前传入的输入值实体”这个概念时, 则应该选用“引数”来译“ 和 ”。其它一些术语如“饰词” “提领”( )等也皆因台湾译法生动传神而予以采用。另外,有些术语亦会采用 数学或科学研究中的严谨衣述而非口常表述,如“校验”(,衣示止确性的验证,不译 为“检查”)、“平凡的”( 表示符合形式要求的最小结构,不译为“简单”),“合式 的 )等。相信一米这些译法已经为一些相当流行的高质量译本采用,读者应 该已有经验;一来这些词的确很有张力,能够为读者迅速掌握,若给您一时带来些许不便, 也请见谅为盼。 以下表格整理了本书中采用的术语之中英文对照 英文术语 中文译文 抽象 抽象性 访问 访问层级 可访问性 弱聚合 地址 取址(操作/运算符 强聚合 算法 分配 体系结构 引数 数组 断 赋值(操作/运算符) class 基类(型别) 基型别 运算符 英文术语 中文译文 绑位 异蔽 按位 」(语句)区块 布尔(量/值) 边界 建构 内建 字节 用调符 调 class 类 代码 兼容 编译期 绵译器 组复 件 具象的 连接/联系 约束/规约 构造过程 构造函数 常量性 常容 量 器 逆变性 动词) 复制 (名词) 副本 协变性 创建 自定义 空悬(的 数据 有时“”亦用作度量存储尺寸之量词。 本书中在“c1as5”表示单独的“用户自定义型别”概念时,常就上下文译作“型别”、“C1a55型别”, 或保留不译(使用关键字字体C1ass)。和其它的单词组成复合概念的修饰成分时,一律不译,如“clas5 模板”、“ class对象”等等;而作为复合概念之主体成分时,则译为“类”,如“基类”、“派生类”“抽 象类”和“具象类”等。

...展开详情
试读 127P C++99个常见错误
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
zilaiye5 这个列举了C++编程的常见99个错误并给出建议,译者和原作者的思想迸发出智慧的火花,很值得一看
2012-12-28
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
C++99个常见错误 42积分/C币 立即下载
1/127
C++99个常见错误第1页
C++99个常见错误第2页
C++99个常见错误第3页
C++99个常见错误第4页
C++99个常见错误第5页
C++99个常见错误第6页
C++99个常见错误第7页
C++99个常见错误第8页
C++99个常见错误第9页
C++99个常见错误第10页
C++99个常见错误第11页
C++99个常见错误第12页
C++99个常见错误第13页
C++99个常见错误第14页
C++99个常见错误第15页
C++99个常见错误第16页
C++99个常见错误第17页
C++99个常见错误第18页
C++99个常见错误第19页
C++99个常见错误第20页

试读结束, 可继续阅读

42积分/C币 立即下载 >