注意:标记为社区 wiki。
最近几天,我意识到我对 C++ 知之甚少。
除了:
- 使用 STL
- 实施 RAII
- 实现引用计数的智能指针
- 编写我自己的基于策略的模板类
- 重载运算符 << 为了好玩
优秀的 C++ 程序员还必须了解哪些其他技术?
谢谢!
我认为这应该涵盖它:
对于优秀的 C++ 程序员来说,前两个是“必须知道的”。“优秀的 C++ 程序员”不会为了好玩而重载运算符。
基本的:
也很有用:
对脑残或特殊情况有用:
(几乎不是必须知道的,但仍然有用)使用运算符重载和模板元编程来编写特定领域的语言(参见 Boost.Spirit 的一个很好的例子)——但这也是一种让你自己很容易的事情.
我用来改进我的 c++ 的方法是阅读 leveldb 的源代码。因为 leveldb 是产品级代码。因此,您可以从实际产品中学习 cpp 成语和设计模式。让我给你看一些例子
Leveldb 使用 Pimpl 成语,几乎在它的所有头文件中,例如 table.h table_build.h write_batch.h。可以直接从代码中学习
Leveldb使用了很多OO设计模式,比如build模式,table有table_build类来建表,block有block_build类来建block
Leveldb也使用了Iterator模式,迭代器让我们使用leveldb更加方便。
所以我认为leveldb包含了很多c++工程师应该知道的习语或设计模式。