47

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

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

为什么要使用成语,成语有什么作用?

4

7 回答 7

55

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

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

于 2009-11-18T22:32:11.727 回答
29

这是一份清单。如果我必须选择一对,我可能会选择 Curiously Recurring Template Pattern 或 Virtual Constructors。

于 2009-11-18T22:38:26.630 回答
11

PIMPL,又名指向 IMPL指针

于 2009-11-18T22:31:33.250 回答
8

模板元编程。这很棒,因为它基本上是编译时的鸭子类型,因此您可以通过静态类型的速度获得鸭子类型的大部分灵活性。

于 2009-11-18T22:35:37.757 回答
7

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

于 2009-11-18T22:37:36.473 回答
6

利用强类型和const正确性也非常有帮助。

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

于 2009-11-30T23:46:15.497 回答
5

RAII、COW、pimpl、demeter 法则(不确定是否可以归类为成语)、类型特征和政策。(COW 和得墨忒耳法则不限于 C++)

于 2009-11-19T00:05:09.690 回答