C++ 程序员应该知道哪些 C++ 习语?
通过 C++ 习语,我的意思是设计模式或做某些事情的方式仅适用于 C++,或者比大多数其他语言更适用于 C++。
为什么要使用成语,成语有什么作用?
C++ 程序员应该知道哪些 C++ 习语?
通过 C++ 习语,我的意思是设计模式或做某些事情的方式仅适用于 C++,或者比大多数其他语言更适用于 C++。
为什么要使用成语,成语有什么作用?
到目前为止,学习和知道的(几乎)C++ 独有的最重要的“模式”是RAII(资源获取即初始化)。
编辑:(回答编辑到问题中的额外问题)。您主要使用 RAII 来(半)自动化资源管理。最明显的用途是在拥有对象超出范围时释放对象拥有的资源,例如释放内存或关闭文件。
这是一份清单。如果我必须选择一对,我可能会选择 Curiously Recurring Template Pattern 或 Virtual Constructors。
PIMPL,又名指向 IMPL的指针?
模板元编程。这很棒,因为它基本上是编译时的鸭子类型,因此您可以通过静态类型的速度获得鸭子类型的大部分灵活性。
如果您想充分利用 STL,那么迭代器和仿函数/函数对象是必不可少的习语。迭代器的使用也隐含地依赖于“半开范围”习语。
利用强类型和const
正确性也非常有帮助。
我还禁止默认的复制构造函数和赋值运算符。我实际上超越了这一点,但这些是最常见的。我认为如果它们不是隐含的,生活会更轻松。
RAII、COW、pimpl、demeter 法则(不确定是否可以归类为成语)、类型特征和政策。(COW 和得墨忒耳法则不限于 C++)