[翻译] Effective C++, 3rd Edition, Introduction(导言)

Effective C++ 英中简繁术语对照 文章目录英中简繁术语对照介绍英简繁术语对照表 英中简繁术语对照 介绍 这里列岀本书出现之编程术语的英中对照。本中文版在海峡两岸同步发行,因 此我也列出本书简繁两版的术语对照,方便某些读者从中一窥两岸计算机用语。 表中带有*者表示本书对该词条大多直接釆用英文术语。中英术语的选择系 由以下众多考虑中取其平衡: 业界和学界习惯。即便是学生读者,终也要离开学校进入职场;熟悉业界和学 界的习惯用语(许多为英文),避免二次转换,很有必要。 这是一本中文版,需顾及中文阅读的感觉和顺畅性。过多保留英文术语会造成 版面的破 阅读详情

Introduction(导言)

作者:Scott Meyers

译者:fatalerror99 (iTePub's Nirvana)

发布:http://blog.youkuaiyun.com/fatalerror99/

学习一种编程语言的基础是一回事;学习如何用那种语言设计和实现高效率的程序完全是另外一回事。对于 C++ ——一种以拥有非同寻常的能力范围和表现力而自豪的语言——更是尤其如此。如果能正确使用,与 C++ 共事是一件令人快乐的事情。极多样的设计样式被直接表达并有效实现。对于 classes(类),functions(函数),以及 templates(模板)的明智选择和小心精巧的安排能使应用程序的编程更加简单,直观,高效,并基本无错。如果你知道如何去做,写出高效的 C++ 程序并不特别难。然而,如果不经训练就贸然使用,C++ 也会导致不可理解的,难以维护的,无法扩展的,低效率的,错误百出的代码。

本书的目的在于引导你如何高效使用 C++。我假设你已经熟悉了作为语言的 C++ 并有使用它的一些经验。我在此提供的是使用这种语言的指南,以使你的程序易于理解,可维护,易移植,可扩展,效率高,而且行为符合你的预期。

我提供的建议落在两个主要的范围中:普通的设计策略,以及特殊语言特性的具体细节。设计的讨论集中于如何在 C++ 做某件事情的多种不同方法之间进行选择。如何在 inheritance(继承)和 templates(模板)之间选择?如何在 public(公有)和 private inheritance(私有继承)之间选择?如何在 private inheritance(私有继承)和 composition(复合)之间选择?如何在 member(成员)和 non-member functions(非成员函数)之间选择?如何在 pass-by-value(传值)和 pass-by-reference(传引用)之间选择?在一开始就做出正确的决定是很重要的,因为一个不好的选择可能会直到开发过程很晚的阶段才显现出来,在这时候再调整它常常是困难重重,极为耗时而且代价不菲的。

即使在你正确地知道你要做什么的时候,仅仅把事情做对也是需要技巧的。assignment operators(赋值运算符)的合适的返回类型是什么?destructor(析构函数)什么时候应该是 virtual(虚拟)的?当 operator new(运算符 new)找不到足够的内存时它应该怎么办?类似这些的令人费神的细节是至关重要的,因为错误的做法几乎总是导致无法预料的,很可能令人迷惑的程序行为。这本书正是来帮助你避免这些问题的。

这不是一本全面的 C++ 手册。它收集了 55 个详细的提议(我将它们称为 Items)告诉你怎样才能改善你的程序和设计。每一个 Item 都能 stands more or less on its own(独立成章),但大部分也包含对其它 Items 的参考。因而,读这本书的一个方法就是从你感兴趣的一个 Item 开始,然后顺着它的参考条目继续看下去。

这本书也不是一本 C++ 入门书。例如,在 Chapter 2(第二章),我希望能告诉你关于 constructors(构造函数),destructors(析构函数),以及 assignment operators(赋值运算符)正确实现的全部内容,但是我假设你已经知道或者能在别处找到这些函数做些什么以及它们该怎样声明的资料。大量 C++ 书籍包含类似这样的信息。

这本书的目的是为了突出 C++ 编程中那些常常被忽略的方面。其它书描述了语言的各个部分。这本书则告诉你如何将这些部分结合起来以达到高效编程的最终目的。其它书告诉你如何使你的程序能够编译。这本书则告诉你如何避免那些编译器不能告诉你的问题。

与此同时,本书将自己限制在 standard C++(标准 C++)之内。在此仅仅使用官方的语言标准中的特性。可移植性是本书一个关键的关注点,所以如果你要寻找平台依赖的特性和部件,在这里不会找到。

另一个在本书中找不到的东西是 C++ Gospel(C++ 福音书)——通向完美的 C++ 软件的一条 One True Path(真理之路)。本书中的每一个 Item 都在如何生成更好的设计,如何避免一般的问题,以及如何得到更高的效率等方面提供指导,但没有一个 Item 是普遍适用的。软件设计和实现是一项复杂的任务,被 hardware(硬件),operating system(操作系统),和 application(应用程序)的限制所影响,所以我能做的最好的事情就是为创建更好的程序提供 guidelines(指导方针)。

如果你在所有的时候都遵守这些 guidelines(指导方针),你将不太可能落入环绕在 C++ 周围的大量陷阱中,但是作为 guidelines(指导方针)的固有限制,它总有例外。这就是为什么每一个 Item 都有一个详细的解释。这些解释是本书中最重要的部分。只有理解了一个 Item 背后的基本原理,你才能决定它是否适合你开发的软件以及你被困其下的特有的限制。

本书最好用来增加关于 C++ 如何运转,为什么它会这样运转,以及如何让它的行为为你服务等方面的知识。盲目运用本书的 Items 无疑是不适当的,但是与此同时,如果你没有更好的理由,或许也不应该违反这些 guidelines(指导方针)中的任何一条。

effective c++.mobi,可直接用于kindle mobi文件,可以直接放到kindle中阅读,也可以通过发送到个人的kindle邮箱中进行阅读,亲测可用,非常不错! 立即下载

相关推荐

Effective_C++_3rd_Edition.pdf 英文原版

Effective_C++_3rd_Edition 很棒的C++进阶书 如果能够全部都懂看完 肯定会在语言学习的基础上得到很大的提升

[翻译] Effective C++, 3rd Edition, Chapter 1. 习惯于 C++

Chapter 1. 习惯于 C++作者:Scott Meyers译者:fatalerror99 (iTePubs Nirvana)发布:http://blog.youkuaiyun.com/fatalerror99/无论你的编程背景如何,对于 C++ 可能多少有些不习惯。这是一个有着极其丰富特性的威力强大的语言。但是在你能发挥它的威力并有效地使用这些特性之前,你必须使自己习惯于以

艺术编程 4302

Effective C++中文版EPUB电子书

好不容易找到到的电子书,可以在手机和Apple设备上看的电子书,质量比txt好,看起来比pdf方便

EFFECTIVE C++ (万字详解)(一)

前言: effective C++ 是一本经典之作,其翻译较为贴合原著,但读起来未免有些僵硬而让人摸不着头脑,所以,我会以更为贴近中国人的理解,对此书进行一些阐释。 条款01:把 C++ 看成一个语言联邦 C++由几个重要的次语言构成 C语言:区块,语句,预处理器,数组,指针等等。 类:class,封装,继承,多态......(动态绑定等等) 模板:涉及泛型编程,内置数种可供套用的函数或者类。 STL:STL是个模板库,主要涉及容器,算法和迭代器 在不同情况下使用适合的部分,可以使 C++

qq_62674741的博客 1万+

MuMu模拟器过检测实战:从硬件伪装到API欺骗的完整避坑指南

本文详细介绍了MuMu模拟器过检测的实战技术,从硬件伪装到API欺骗的全方位解决方案。通过修改CPU/GPU信息、内存分布、系统属性和行为模拟等关键技术,帮助用户有效绕过现代应用的模拟器检测机制,提升模拟器的隐蔽性和稳定性。

xxx12的博客 1406

电力现货交易市场-报价方式

电是一种能源,也是一种商品,既然是商品自然可以在市场中进行自由交易。

qq_38225433的博客 5119

[原创]强烈推荐,正在翻译的《Effective C++,3rd Edition》

我加入公司以来,经了一个月的培训期,真是受益良多。一来重新温故而知新,踏踏实实搞了一下C/C++,技术上精进不少。二来重新洗脑,抛去了原来在学校以及实习公司养成的编写代码的恶习,开始注重代码质量。很多人拿程序员和民工比,号称软件民工。其实不然。程序员的工作要复杂很多,困难很多。一个优秀的程序员不仅仅要掌握一门以上的语言工具,更要对所用的类库,工具,业务了如指掌,做到运用自如的程度。但是仅仅这些还不

心如止水--coofucoo的专栏 3051

AMD MI50 Linux ROCm 6.4 手动编译与大模型推理实战

GPU加速计算是现代AI推理的核心基础,其性能依赖于硬件架构、驱动栈与运行时环境的深度协同。ROCm作为AMD开源GPU计算平台,采用‘自下而上’的Linux生态集成路径,强调对上游内核、编译器与固件的强耦合。MI50基于Vega 20(gfx900)架构,虽具备32GB HBM2高带宽显存与14.7 TFLOPS FP16算力,但因ROCm官方支持策略转向CDNA架构,自6.5版本起被移出支持列表,仅ROCm 6.4仍提供实验性兼容——这使其成为Linux下部署私有大模型的关键‘最后一班船’。本文围绕MI

weixin_32770423的博客 370

《Effective Modern C++》翻译--简介

北京时间2016年1月9日10:31:06,正式开始翻译。水平有限,各位看官若有觉得不妥之处,请批评指正。 之前已经有人翻译了前几个条目,有些借鉴出处:http://www.cnblogs.com/magicsoar/p/3966177.html?utm_source=tuicool&utm_medium=referral 现在就开始《Effective Modern C++》翻译之旅,第一个姿势-

一蓑烟雨任平生 也无风雨也无晴 1万+

Allegro老鸟的20年效率秘籍:用YepEda Skill脚本实现PCB设计全流程自动化

本文分享了Allegro资深工程师20年效率秘籍,通过YepEda Skill脚本实现PCB设计全流程自动化。从封装建库到规则配置,再到DFM审核,YepEda Skill大幅提升设计效率,每天节省至少4小时重复劳动。文章详细解析了自动化工具链的核心功能,并提供了实战技巧和量化对比数据。

weixin_42546392的博客 239

Visual Studio Code 打开java项目

在 Visual Studio Code 中打开并运行一个 Java 项目之前,你需要确保你已经完成了一些初始设置。

2675

[翻译] Effective C++, 3rd Edition, Preface(前言)

Preface(前言)作者:Scott Meyers译者:fatalerror99 (iTePubs Nirvana)发布:http://blog.youkuaiyun.com/fatalerror99/我在 1991 年写出了 Effective C++ 的最早版本,1997 年出了第二版,我更新了一些重要的方面的素材,但是,因为我不想使熟悉本书第一版的读者感到困惑,我尽最大可能保持了原有

艺术编程 2847

YOLOv8改进,YOLOv8主干网络替换为FasterNet(全网独发手把手教学,助力涨点)

FasterNet的整体架构由四个分层阶段组成,每个阶段包含一组FasterNet模块,并在前面加一个嵌入或合并层。最后三层用于特征分类。每个FasterNet模块内部,一个PConv层后跟两个PWConv层,为了保持特征多样性并降低延迟,归一化和激活层仅在中间层之后进行,其中,PConv 是一种快速高效的卷积操作,通过仅对部分输入通道应用卷积滤波器,而保持其余通道不变,从而减少了计算量和内存访问。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2016

关于EffectIve C++ 的总结(侯捷翻译版)

C++ 提供四种不同而有相辅相成的编程范xing

a130737的专栏 1886

uniapp [安卓苹果App端] - 实现获取请求手机位置权限+开启定位获取经纬度/省市区地址等,检测权限手机定位是否开启并引导用户同意授权,uniApp app端调用本机开启本机定位权限及IP属地

uni-app,手机定位权限,安卓Android,苹果ios,uniapp获取本机位置权限,uni-app获取用户定位数据,uniapp APP获取用户IP属地定位,判断权限,权限被拒绝了怎么办,苹果ios系统无法开启定位,获取定位权限报错,uniapp定位获取省市区,UNI-APP如何开启手机定位功能并获取经纬度,不依赖地图第三方插件组件,打包上架后如何获取,真机运行无法获取定位,安卓和ios权限获取,判断权限检查,正式打包,详细教程,根据获取当前经纬度,再根据经纬度去定位具体省市区,自定义基座打包能成功

🏆 前端领域优质创作者 1万+

刚体转动欧拉方程:从理论到卫星姿态控制的实践

刚体转动欧拉方程是描述刚体旋转运动的基本动力学方程,在卫星姿态控制、机器人学、航空航天等领域有着广泛应用。本文将详细讲解欧拉方程的物理概念、数学推导、数值计算方法,并重点分析其在卫星姿态控制系统中的具体应用。

ScilogyHunter的博客 644

Effective C++

条款1:尽量用const和inline而不用#define条款2:尽量用而不用条款3:尽量用new和delete而不用malloc和free条款4:尽量使用c++风格的注释条款5:对应的new和delete要采用相同的形式条款6:析构函数里对指针成员调用delete条款7:预先准备好内存不够的情况条款8:   写operator new和operator delete时要遵循常规条款9:   避免

梦开始的地方  1717

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 254

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 394

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 349

跟我学c++中级篇—类型定义的方式

本文系统阐述了编程中类型定义的重要性及c++中的实现方式。重点对比了宏定义、typedef与modern using三种机制,指出using在可读性、灵活性和模板支持上的优势,推荐优先使用。同时提醒开发者注意别名滥用、类型歧义、错误信息冗长等问题,强调统一规范与合理设计。最终结论:在现代c++开发中,应以using为主,兼顾简洁性与可维护性,避免陷入命名混乱与编译困境。

fpcc的专栏 88

【C++——类和对象(上)】筑基篇:以封装奠定面向对象之基

本文系统梳理C++类与对象的核心知识点,涵盖类的定义、访问限定符(public/private)、类作用域、对象实例化及内存布局。重点解析封装思想、this指针机制、空类大小为1字节的原因,以及类与对象在内存中的存储差异。通过对比C语言结构体与C++类,揭示面向对象设计的优势:数据保护、接口统一、命名隔离与代码可维护性提升。内容由浅入深,适合作为学习笔记与复习参考。

2602_95684935的博客 496

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 307
上一篇: [翻译] Effective C++, 3rd Edition, Item 25: 考虑支持一个 non-throwing swap(不抛异常的 swap)(下)
下一篇: [翻译] Effective C++, 3rd Edition, Terminology(术语)
fatalerror99
博客等级 码龄24年 166粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值