问题
What C++ idioms should C++ programmers know?
By C++ idioms, I mean design patterns or way of doing certain things that are only applicable for C++ or more applicable for C++ than most other languages.
Why one should use the idioms, and what do the idioms accomplish?
回答1:
Here is one list. If I had to pick a couple I might go with the Curiously Recurring Template Pattern or Virtual Contstructors.
回答2:
By far the single most important "pattern" to learn and know that's (nearly) unique to C++ is RAII (Resource Acquisition Is Initialization).
Edit: (To answer extra question edited into the question). You use RAII primarily to (semi-)automate resource management. The most obvious use is freeing resources owned by objects when the owning objects go out of scope, such as freeing memory or closing files.
回答3:
PIMPL, aka P ointer to IMPL ementation ?
回答4:
Template metaprogramming. It's great because it's basically compile-time duck typing, so you get most of the flexibility of duck typing with the speed of static typing.
回答5:
If you want to get the most out of the STL then iterators and functors/function objects are essential idioms. The use of iterators also implicitly relies on the 'half-open range' idiom too.
回答6:
Exploiting Strong Typing and const
correctness is also extremely helpful.
I also prohibit default copy constructors and assignment operators. I actually go beyond that, but those are the most common. I think life would be easier if they were not implicit.
回答7:
RAII, COW, pimpl, law of demeter (not sure if can be classified as idiom), type traits and policies. (COW and law of demeter are not limited to C++ though)
来源:https://stackoverflow.com/questions/1759613/what-c-idioms-should-c-programmers-use