记下最近看Exceptional C++的一些感受和疑问

1.苦于平时使用标准模板库的时间不多,对标准模板库的经验很少,所以还没有什么太多的感受

不过不论是哪本关于C++标准库的书籍,都会强调一定不能使用无效的迭代器以及某些操作过后会使得迭代器失效!

 

2.实现大小写不敏感字符串的方法中继承了char_traits<> 对traits的概念还是没有完全掌握,或者说应该抽时间实作一下才能更好理解

 

3.因为C++程序员总是把效率挂在嘴边,总是为了效率而绞尽脑汁,哪怕是为了避免生成一个临时对象!这样是不是又成为了C++程序员的一个心智包袱?目前我的思想上只能承诺尽力而为之

 

4.对于异常安全,掌握了两个概念: 基本保证 和 强保证(Commit or Rollback),但仅仅是两个概念,至于如何能够做到这样的异常安全保证,还是知之甚少。

 

5.异常能引起很多麻烦,比如书中的4行代码23条执行路径,如果说异常带来了那么多麻烦,那是不是在项目中应该不用异常或者少用异常?或是一定要在文档中记录什么方法或者什么地方会发出异常?总觉得异常安全的保证仿佛很难

 

6.标准库的设计到底OO还是不OO? 有人说没有继承就不OO?或者说OO应该是物件持有其数据和操作,而非如标准库中那样的操作和物件分开~那标准库的做法,算法和容器分开到底OO还是不OO,如果不OO那是不是因为兼顾到更好的灵活性(如泛型)而牺牲的?

 

7.重载operator++(int)时不能让用户写出 a++++; 这样的代码

 

8.重载是静态行为,默认参数匹配是静态行为

 

9.在使用所有继承的时候都要谨慎 …… 之前阅读Effective C++的时候得到的结果是使用private 继承和多继承的时候要谨慎…… 现在才得知所有的继承都是一种强耦合…… 为了灵活性应该降低耦合,再降低耦合,再降低……

 

10. 该书提倡 Non Virtual Interface 还提倡 pimpl ... 减少编译的依赖性以及更好的封装性.. 简单来说,可以更OO,更灵活,写、维护代码更难……? 仍然在此处打个问号! 计算机科学的谏言:大部分问题都可以藉由多加一层间接性来解决。这样的间接性到底值不值得?C++提倡效率,但是这样简洁性在某些方面是影响效率的,比如函数的转接呼叫,程序代码的编写形式,思维模式上的束缚感(我自己的感觉)。这样的间接性又提供了更高的编译速度,更高的灵活性和可修改性…… 如何抉择?

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
exceptional c++:47个c++工程难题、编程问题和解决方案(中文版)》讲述如何用标准c++进行企业级的软件开发,通过“问题/解答”的方式,启发读者思考,帮助了解隐藏在问题背后的设计思想,以及各种编程指导原则适用的场合。本书列出的条款涵盖了许多方面的主题,尤其对异常安全性、类和模块的合理设计,正确的代码优化,以及编写符合c++标准的可移植代码进行了深入的讨论。   《exceptional c++:47个c++工程难题、编程问题和解决方案(中文版)》适于有一定c++编程基础的读者阅读。 目录 《exceptional c++:47个c++工程难题、编程问题和解决方案(中文版)》 1 泛型程序设计与c++标准库 1 条款1:迭代器难度系数 1 条款2:大小写不敏感的字符串——之一 5 条款3:大小写不敏感的字符串——之二 9 条款4:可重用性最高的泛型容器——之一 12 条款5:可重用性最高的泛型容器——之二 13 条款6:临时对象 22 条款7:标准库的使用(或者,再论临时对象) 28 2 异常安全性相关的问题与技术 31 条款8:编写异常安全的代码——之一 32 条款9:编写异常安全的代码——之二 37 条款10:编写异常安全的代码——之三 40 条款11:编写异常安全的代码——之四 47 条款12:编写异常安全的代码——之五 50 条款13:编写异常安全的代码——之六 56 条款14:编写异常安全的代码——之七 62 条款15:编写异常安全的代码——之八 65 条款16:编写异常安全的代码——之九 68 条款17:编写异常安全的代码——之十 73 条款18:代码的复杂性——之一 75 条款19:代码的复杂性——之二 79 3 类的设计与继承 85 条款20:类的编写技巧 85 条款21:虚函数的重载 93 条款22:类之间的关系——之一 99 条款23:类之间的关系——之二 103 条款24:继承的使用和滥用 110 条款25:面向对象程序设计 121 4 编译器防火墙和pimpl惯用法 123 条款26:将编译期依赖性降到最低——之一 123 条款27:将编译期依赖性降到最低——之二 127 条款28:将编译期依赖性降到最低——之三 132 条款29:编译防火墙 135 条款30:fast pimpl惯用法 138 5 名字查找、名字空间和接口规则 148 条款31:名字查找与接口规则——之一 148 条款32:名字查找与接口规则——之二 152 条款33:名字查找和接口规则——之三 162 条款34:名字查找与接口规则——之四 167 6 内存管理 176 条款35:内存管理——之一 176 条款36:内存管理——之二 179 条款37:auto_ptr 186 7 误区、陷阱以及错误的惯用法 201 条款38:对象标识 201 条款39:自动转换 204 条款40:对象的生存期——之一 206 条款41:对象的生存期——之二 209 8 其他主题 219 条款42:变量的初始化 219 条款43:正确使用const 222 条款44:类型转换 231 条款45:bool 238 条款46:转调函数 242 条款47:控制流程 244 后记 254 参考书目 256

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值