C ++程序员应该使用哪些C ++习惯用法?

时间:2009-11-18 22:28:56

标签: c++ design-patterns idioms c++-faq

C ++程序员应该知道哪些C ++成语?

通过C ++习语,我的意思是设计模式或做某些事情的方式,这些事情只适用于C ++或更适用于C ++,而不是大多数其他语言。

为什么一个人应该使用成语,这些成语会完成什么?

7 个答案:

答案 0 :(得分:55)

到目前为止,学习和了解(几乎)C ++独有的最重要的“模式”是RAII(资源获取是初始化)。

编辑:(回答编辑到问题中的额外问题)。您主要使用RAII(半)自动化资源管理。最明显的用途是在拥有对象超出范围时释放对象拥有的资源,例如释放内存或关闭文件。

答案 1 :(得分:28)

这是一个list。如果我不得不选择一对,我可能会选择奇怪的重复模板模式或虚拟结构。

答案 2 :(得分:11)

PIMPL,又名 P IMPL 的影响?

答案 3 :(得分:8)

模板元编程。这很棒,因为它基本上是编译时的鸭子打字,所以你可以通过静态输入的速度获得鸭子打字的大部分灵活性。

答案 4 :(得分:7)

如果你想充分利用STL,那么迭代器和函子/函数对象就是必不可少的习惯用法。迭代器的使用也隐含地依赖于“半开放范围”的习惯。

答案 5 :(得分:6)

利用强大的打字和const正确性也非常有用。

我还禁止默认的复制构造函数和赋值运算符。我实际上超越了这一点,但这些是最常见的。我认为如果不隐含生活会更容易。

答案 6 :(得分:5)

RAII,COW,pimpl,demeter法则(不确定是否可归类为成语),类型特征和政策。 (虽然COW和demeter定律不限于C ++)