读 S. Meyers 之 《More Effective C++:35个改编程与设计的有效方法》

S. Meyers, 侯捷. More Effective C++:35个改编程与设计的有效方法. ISBN: 978-7-121-12570-6

这本书的作者就是上次介绍的 S. Meyers,这本书也就是上次介绍的 Effective C++ 的续集。其实这两本书本可以写在一起,但作者还是把他认为比较“高级”的部分独立出来写了两本书。一本仅涉及 C++ 语法本身,也就是这一本;另一本则专门讲 STL,那本我们下次再聊。

这本书中关注的重点仍然有约一半是和指针有关的。指针是 C 语言的精髓,它本质是汇编语言寻址机制的抽象,但到了 C++ 中指针的地位就变得很尴尬。很多时候你不得不用指针,但 C++ 中的类机制让这一切变得很复杂。为了让这一切变得易于使用, C++ 又引入了 smart pointers 之类的机制用于取代指针。所以现在 C++ 里既有基础的指针,又有 smart pointers,基础指针是相当不安全的, smart pointers 则相对安全些。 C++ 的最新标准则鼓励人们不要使用基础的指针,尽量使用 smart pointers 等机制代替。问题在于,很多初学者学到基础指针就觉得自己学会了,根本不知道还有 smart pointers 一说。于是,混乱且不安全的 C++ 代码到处都是。

除了指针,这本书还对一些其他的 C++ 高级特性做了说明。这些特性放到 C++ 里算是高级,但到了其他现代化设计的语言中,只能算是基础。例如异常处理机制。这基本是目前设计的语言的标配,但到了 C++ 里它不仅加入得很晚,而且为了兼容 C++ 之前设计的语法垃圾堆,弄得非常复杂。

还有 RTTI (Run-Time Type Identification),这个功能在 Python 或者 C# 之类的语言里就是一个非常自然的功能,在 Rust 中则是一个清晰独立的包。但在 C++ 中就是语言标准里让人感觉非常难受的一部分。

总之就是,确实很多现代化的编程功能 C++ 都有,而且可能不少还原源自 C++。但目前看来, C++ 对现代化编程功能的支持还是远远不够。而且已经支持的功能在 C++ 里用起来也不舒服。这一切的前提还是你用的是最新标准的 C++。如果你痴迷于几十年前的旧标准,那么连这些优势都没有。


求点赞,求收藏,求分享

欢迎关注我的公众号,微信搜索:知则

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值