热搜关键词: EMC电机控制PLC数字电路PCB设计

pdf

Effective C++ 第3版 中文.pdf

  • 1星
  • 2018-05-10
  • 16.82MB
  • 需要0积分
  • 86次下载
  • favicon收藏
  • rep举报
  • free评论
标签: C++

C++

目录

译序 vii 

中英简繁术语对照 ix 

目录 xvii 

序言 xxi 

致谢 xxiii 

导读 1 

1.  让自己习惯C++ 11 

Accustoming  Yourself  to  C++ 11 

条款01:视C++  为一个语言联邦 11 

View  C++  as  a  federation  of  languages 11 

条款02:尽量以const,  enum,  inline替换  #define 13 

Prefer  consts,enums,  and  inlines  to  #defines. 13 

条款03:尽可能使用const 17 

Use  const  whenever  possible. 17 

条款04:确定对象被使用前已先被初始化 26 

Make  sure  that  objects  are  initialized  before  they're  used. 26 

2.  构造/析构/赋值运算 34 

Constructors,  Destructors,  and  Assignment  Operators 34 

条款05:了解C++  默默编写并调用哪些函数 34 

Know  what  functions  C++  silently  writes  and  calls. 34 

条款06:若不想使用编译器自动生成的函数,就该明确拒绝 37 

Explicitly  disallow  the  use  of  compiler-generated  functions  you  do  not  want. 37 

条款07:为多态基类声明virtual析构函数 40 

Declare  destructors  virtual  in  polymorphic  base  classes. 40 

条款08:别让异常逃离析构函数 44 

Prevent  exceptions  from  leaving  destructors. 44 

条款09:绝不在构造和析构过程中调用virtual函数 48 

Never  call  virtual  functions  during  construction  or  destruction. 48 

条款10:令operator=  返回一个reference  to  *this 52 

Have  assignment  operators  return  a  reference  to  *this. 52 

条款11:在operator=  中处理“自我赋值” 53 

Handle  assignment  to  self  in  operator=. 53 

条款12:复制对象时勿忘其每一个成分 57 

Copy  all  parts  of  an  object. 57 

3.  资源管理 61 

Resource  Management 61 

条款13:以对象管理资源 61 

Use  objects  to  manage  resources. 61 

条款14:在资源管理类中小心coping行为 66 

Think  carefully  about  copying  behavior  in  resource-managing  classes. 66 

条款15:在资源管理类中提供对原始资源的访问 69 

Provide  access  to  raw  resources  in  resource-managing  classes. 69 

条款16:成对使用new和delete时要采取相同形式 73 

Use  the  same  form  in  corresponding  uses  of  new  and  delete. 73 

条款17:以独立语句将newed对象置入智能指针 75 

Store  newed  objects  in  smart  pointers  in  standalone  statements. 75 

4.  设计与声明 78 

Designs  and  Declarations 78 

条款18:让接口容易被正确使用,不易被误用 78 

Make  interfaces  easy  to  use  correctly  and  hard  to  use  incorrectly. 78 

条款19:设计class犹如设计type 84 

Treat  class  design  as  type  design. 84 

条款20:宁以pass-by-reference-to-const替换pass-by-value 86 

Prefer  pass-by-reference-to-const  to  pass-by-value. 86 

条款21:必须返回对象时,别妄想返回其reference 90 

Don't  try  to  return  a  reference  when  you  must  return  an  object. 90 

条款22:将成员变量声明为private 94 

Declare  data  members  private. 94 

条款23:宁以non-member、non-friend替换member函数 98 

Prefer  non-member  non-friend  functions  to  member  functions. 98 

条款24:若所有参数皆需类型转换,请为此采用non-member函数 102 

Declare  non-member  functions  when  type  conversions  should  apply  to  all  parameters. 102 

条款25:考虑写出一个不抛异常的swap函数 106 

Consider  support  for  a  non-throwing  swap. 106 

5.  实现 113 

Implementations 113 

条款26:尽可能延后变量定义式的出现时间 113 

Postpone  variable  definitions  as  long  as  possible. 113 

条款27:尽量少做转型动作 116 

Minimize  casting. 116 

条款28:避免返回handles指向对象内部成分 123 

Avoid  returning  "handles"  to  object  internals. 123 

条款29:为“异常安全”而努力是值得的 127 

Strive  for  exception-safe  code. 127 

条款30:透彻了解inlining的里里外外 134 

Understand  the  ins  and  outs  of  inlining. 134 

条款31:将文件间的编译依存关系降至最低 140 

Minimize  compilation  dependencies  between  files. 140 

6.  继承与面向对象设计 149 

Inheritance  and  Object-Oriented  Design 149 

条款32:确定你的public继承塑模出is-a关系 150 

Make  sure  public  inheritance  models  "is-a." 150 

条款33:避免遮掩继承而来的名称 156 

Avoid  hiding  inherited  names. 156 

条款34:区分接口继承和实现继承 161 

Differentiate  between  inheritance  of  interface  and  inheritance  of  implementation. 161 

条款35:考虑virtual函数以外的其他选择 169 

Consider  alternatives  to  virtual  functions. 169 

条款36:绝不重新定义继承而来的non-virtual函数 178 

Never  redefine  an  inherited  non-virtual  function. 178 

条款37:绝不重新定义继承而来的缺省参数值 180 

Never  redefine  a  function's  inherited  default  parameter  value. 180 

条款38:通过复合塑模出has-a或"根据某物实现出" 184 

Model  "has-a"  or  "is-implemented-in-terms-of"  through  composition. 184 

条款39:明智而审慎地使用private继承 187 

Use  private  inheritance  judiciously. 187 

条款40:明智而审慎地使用多重继承 192 

Use  multiple  inheritance  judiciously. 192 

7.  模板与泛型编程 199 

Templates  and  Generic  Programming 199 

条款41:了解隐式接口和编译期多态 199 

Understand  implicit  interfaces  and  compile-time  polymorphism. 199 

条款42:了解typename的双重意义 203 

Understand  the  two  meanings  of  typename. 203 

条款43:学习处理模板化基类内的名称 207 

Know  how  to  access  names  in  templatized  base  classes. 207 

条款44:将与参数无关的代码抽离templates 212 

Factor  parameter-independent  code  out  of  templates. 212 

条款45:运用成员函数模板接受所有兼容类型 218 

Use  member  function  templates  to  accept  "all  compatible  types." 218 

条款46:需要类型转换时请为模板定义非成员函数 222 

Define  non-member  functions  inside  templates  when  type  conversions  are  desired. 222 

条款47:请使用traits  classes表现类型信息 226 

Use  traits  classes  for  information  about  types. 226 

条款48:认识template元编程 233 

Be  aware  of  template  metaprogramming. 233 

8.  定制new和delete 239 

Customizing  new  and  delete 239 

条款49:了解new-handler的行为 240 

Understand  the  behavior  of  the  new-handler. 240 

条款50:了解new和delete的合理替换时机 247 

Understand  when  it  makes  sense  to  replace  new  and  delete. 247 

条款51:编写new和delete时需固守常规 252 

Adhere  to  convention  when  writing  new  and  delete. 252 

条款52:写了placement  new也要写placement  delete 256 

Write  placement  delete  if  you  write  placement  new. 256 

9.  杂项讨论 262 

Miscellany 262 

条款53:不要轻忽编译器的警告 262 

Pay  attention  to  compiler  warnings. 262 

条款54:让自己熟悉包括TR1在内的标准程序库 263 

Familiarize  yourself  with  the  standard  library,  including  TR1. 263 

条款55:让自己熟悉Boost 269 

Familiarize  yourself  with  Boost. 269 

A  本书之外 273 

B  新旧版条款对映 277 

索引 280 

推荐帖子 最新更新时间:2023-01-25 12:56

快速学习汇编的方法
可能有一些人士认为汇编不重要,现在都有C语言编译器了,为什么还需要学习汇编?这个问题需要对不同的人去分来看,如果是学习上层应用软件的,汇编的确不那么重要,但是如果是底层驱动或者平台架构的,汇编会变得非常的重要。 下面举几个例子说明汇编的重要性: 1 系统的启动代码必须要汇编去编写,因为需要涉及到设置C语言运行栈指针,操作CPU内部协处理器等,C语言是无法完成的。 2 由于编译器优化的原因,往
jorya_txj 嵌入式系统
dsp28335 IIC总结
1.IIC低速同步串行半双工通信2.空闲总线均为高电平,任一器件输出低将总线拉低(各器件线与关系)3.每个IIC总线上的器件都有唯一地址4.IIC数据位有效性规定:时钟信号为高电平时,数据线必须保持稳定,时钟信号为低电平时,数据线上的高低电平状态才允许变化。5.起始信号:SCL为高电平,SDA由高变低      停止信号:SCL为高电平,SDA由低变高6.每一个字节8位长度,数据传送时,先传送最高
Jacktang DSP 与 ARM 处理器
5509a程序下载求助
我在使用鸿翔的开发板,按照提供的下载程序的flashburn操作,为什么一直不成功呢?我是用的是ccs5.5? 使用方法         首先用DEC5509_flash.pof更新CPLD;         用CCS5000建立自己的工程,编译、生成OUT 和MAP文件;         将生成的文件名改成USER_OUT.OUT 及 USER_OUT.MAP;         将上述
zhuanxing DSP 与 ARM 处理器
LPC1500体验+之七_AD使用初谈
本帖最后由 youzizhile 于 2014-9-16 10:57 编辑 LPC1500体验+开发环境的构建 LPC1500体验+驱动步进电机设计 LPC1500体验+led闪烁 LPC1500体验+之四_串口调试接收数据成功 LPC1500体验+之五_LCD1602驱动电路设计 LPC1500体验+之六_步进电机驱动设计 一直说要使用LPC1549的AD做些东西,但是总是忙
youzizhile NXP MCU
新手共同进步——CODE GENERATOR如何生成,不是找
我只想说Uube Suite+好难操作,瑞萨是否能够尝试帮客户自动更新呢,我把库整理了又整,还是没搞出来,先是按照网上教程进行替换,先是把它放到我需要的地方去,结果,只有Debug Only,意思是下载不了的意思,没法应用,我也就无法尝试下载程序,以便验证板子是否正常使用。    当然遇到这么点困难是不该放弃的,我就继续努力,因为这个库太庞大了,不利于修改,我就按网上另一种教程进行完成,当然因为
不足论 瑞萨电子MCU
TMS320F28335学习笔记-启动过程
1.DSP reset后运行的起始地址是多少?  0x3FFFC02.仿真器烧写程序的步骤是?  根据cmd文件把程序烧到指定位置,然后执行。3.DSP的Flash启动过程是什么?首先硬件配置GPIO84~87上拉为1,即处于Flash启动过程。当DSP复位后,会从复位向量0x3FFFC0处取得复位向量,并跳转到InitBoot处开始执行,InitBoot会读GPIO84~87的值发现全为1判断为
好大一阵风 微控制器 MCU
分清热缩管的阻燃等级都是哪些东东?
     热缩管在电路中的主要作用是保护重要器件和电路不受到伤害与影响,其虽然不对电路的运行产生任何影响,但有时也是决定整个设计成败的关键点。 UL,VW-1测试标准 UL,VW-1测试标准是较为常见的一种标准,实验规定试样保持垂直,用试验用的喷灯(火焰高度125mm,热功率500W)燃烧15秒钟,然后停止15秒钟,反复5次。 合格标准为:1、余火焰不可超过60秒钟。2、试样不可烧损2
qwqwqw2088 模拟与混合信号
瑞萨电子设计大赛-自动化控制盒四
本帖最后由 liaoyuanhong 于 2015-9-26 02:15 编辑         大家晚上好,首选,祝大中秋节快乐。         上次我学习了LED的点亮,那么,今天我们来学什么呢。个人觉得定时器是很重要的,它可以做为一个定时的时基,也可以设定时间在低功耗中唤醒CPU,还有PWM输出等等,所以学习定时器还是很重要的。         定时器, 我就先从最基本的学起吧。我们
liaoyuanhong 瑞萨电子MCU

评论

haihuam
终于找到这本书了,收藏了,得好好学习!
2020-10-26 23:38:32
行者彳亍
效率一直是c++强调的东西
2019-11-18 23:54:46
小小电油油
这个是第三版资源,学习一下
2019-08-08 10:51:09
登录/注册

意见反馈

求资源

回顶部
查找数据手册?

EEWorld Datasheet 技术支持

热门活动

相关视频

可能感兴趣器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
×