代码之家  ›  专栏  ›  技术社区  ›  anon

基本C++习语/技巧

  •  10
  • anon  · 技术社区  · 7 年前

    注意:标记为社区wiki。

    最近几天,我已经意识到我对C++的了解是多么少。

    此外:

    • 使用STL
    • 实施RAII
    • 实现引用计数的智能指针
    • 编写自己的基于策略的模板类
    • 重载运算符<<以获得乐趣

    对于一个优秀的C++程序员来说,还有哪些技术是必须知道的?

    谢谢!

    6 回复  |  直到 10 年前
        1
  •  5
  •   Peter Alexander    16 年前

    我认为这应该包括:

    More C++ Idioms - Wikibooks

        2
  •  4
  •   dirkgently    16 年前
    • 物件导向设计
    • 异常安全保证的类型(这是大多数设计模式/习惯用法所基于的)。
    • 何时使用哪个标准容器
    • 促进
        3
  •  2
  •   florin    16 年前

    前两个是对一个好的C++程序员的“必须知道”。好的C++程序员不会让操作员超载。

        4
  •  1
  •   Riley Dutton    13 年前

    基本:

    • RTTI
    • 虚拟函数
    • 共享等
    • 模板
    • 虚拟继承
    • 可变宏指令

    也有用:

    • 属性(取决于编译器)
    • 可变模板
    • 变量函数
    • constexpr(在编译时排序/计算字符串散列等…但后者与最后一节有关)
    • 兰姆达斯

    对脑力劳动或特殊情况有用:

    • CRTP
    • 斯芬纳
    • 不可能的如果(类型特征)
    • 前宏
    • 用户定义数据标识
        5
  •  0
  •   Tronic    16 年前

    (几乎不必知道,但仍然有用)使用运算符重载和模板元编程编写特定于领域的语言(请参阅boost.spirit以获得一个很好的示例),但这也是一种让您轻松地完成任务的方法。

        6
  •  0
  •   baotiao    10 年前

    我用来改进C++的方式是读取LealDB的源代码。因为leveldb是产品级代码。因此,您可以从实际产品中学习CPP习惯用法和设计模式。我给你举个例子

    leveldb使用pimpl习惯用法,几乎在所有头文件中,比如table.h table_build.h write_batch.h。您可以直接从代码中学习

    LEVELDB使用许多OO设计模式,例如构建模式,表有表构建类来构建表,块有块构建类来构建块

    leveldb也使用迭代器模式,迭代器使我们使用leveldb更加方便。

    因此,我认为LealDB包含许多C++语言工程师应该知道的成语或设计模式。