注意:标记为社区维护。 最近几天,我意识到自己对C++知之甚少。 除了: 使用STL 实现RAII 实现引用计数的智能指针 编写自己的基于策略的模板类 重载运算符<< 以供娱乐 还有哪些技术是一个优秀的C++程序员必须掌握的? 谢谢!
基础内容: RTTI 虚函数 shared_ptr等 模板 虚继承 可变参数宏 其他有用的内容: 属性(取决于你的编译器) 可变参数模板 可变参数函数 constexpr(在编译时排序/计算字符串哈希等...但后者与最后一节相关) Lambda表达式 用于特殊情况或脑残代码: CRTP SFINAE enable_if(类型特征) foreach宏 用户定义字面量
我提高C++编程技能的方法是通过阅读leveldb源代码。因为leveldb是一个产品级别的代码,所以你可以从一个真实的产品中学习C++语言习惯和设计模式。让我给你举几个例子。Leveldb使用Pimpl惯用法,在几乎所有头文件中都使用了,例如table.h、table_build.h、write_batch.h等。你可以直接从代码中学习。Leveldb使用了许多面向对象的设计模式,例如建造者模式。表格有table_build类来建立表格,块有block_build类来构建块等。Leveldb还使用了迭代器模式,这使得我们更方便地使用leveldb。因此,我认为leveldb包含了许多C++工程师需要了解的惯用法或设计模式。