基本 C++习语/技巧
注意:标记为社区 wiki。
最近几天,我意识到我对C++知之甚少。
此外:
- 使用 STL
- 实现 RAII
- 实现引用计数智能指针
- 编写我自己的基于策略的模板类
- 重载运算符 << 一个优秀的 C++ 程序员还
必须了解哪些其他技术?
谢谢!
Note: marked as community wiki.
In recent days, I've realized how little I know about C++.
Besides:
- using the STL
- implementing RAII
- implementing ref-counted smart pointers
- writing my own policy-based template classes
- overloading operators << for fun
What other techniques are must-know for a good C++ programmer?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我认为这应该涵盖它:
更多 C++ 习语 - 维基教科书
I think this should cover it:
More C++ Idioms - Wikibooks
前两个是优秀 C++ 程序员“必须了解”的。 “优秀的 C++ 程序员”不会为了好玩而重载运算符。
The first two are 'must know' for a good C++ programmer. 'Good C++ programmers' do not overload operators for fun.
基本:
也有用:
对于脑残或特殊情况有用:
Basic:
Also useful:
Useful for brainfucking or in special cases:
(几乎不是必须知道的,但仍然有用)使用运算符重载和模板元编程编写特定于领域的语言(请参阅 Boost.Spirit 以获得一个很好的示例) - 但这也很容易搬起石头砸自己的脚。
(hardly a must-know, but still useful) Writing domain-specific languages with operator overloading and template metaprogramming (see Boost.Spirit for a nice example) - but this is the kind of thing that makes shooting yourself in the foot easy, too.
我用来提高c++的方法是阅读leveldb的源代码。因为leveldb是产品级别的代码。所以你可以从真实的产品中学习cpp习惯用法和设计模式。让我向您展示一些
Leveldb使用Pimpl习惯用法的示例,几乎在它的所有头文件中,例如table.h table_build.h write_batch.h。直接从代码中可以了解到
Leveldb使用了很多OO设计模式,比如构建模式,表有table_build类来构建表,块有block_build类来构建块
Leveldb也使用了Iterator模式,迭代器make我们用leveldb比较方便。
所以我认为leveldb包含许多C++工程师应该知道的惯用语或设计模式。
The way I used to improve my c++ is reading the source code of leveldb. Because leveldb is a product level code. So you can learn the cpp idiom and design pattern from a real product. Let me show you some example
Leveldb use the Pimpl idiom, almost in all of it's head file, such table.h table_build.h write_batch.h. You can learn from the code directly
Leveldb use many OO design pattern, such as build pattern, the table have the table_build class to build the table, the block have the block_build class to build the block
Leveldb also use the Iterator pattern, the iterator make us use leveldb more convenient.
So I think leveldb contain many idiom or design pattern that c++ engineer should know.