C++类在C++11之后的分类

Categorization of C++ classes post C++11

本文关键字:分类 之后 C++11 类在 C++      更新时间:2023-10-16

Sutter和Alexandrescu以一种非常简单和独立的方式描述了C++类的生态系统,提供了6个主要类别

  1. 类(例如,std::pair、std::vector)
  2. 基本类(类层次结构的构建块)
  3. 特性类(包含类型信息的模板)
  4. 策略类(可插拔行为的片段)
  5. 异常
  6. 辅助类,通常支持特定习惯用法(例如RAII)

当我决定课程设计时,这是一个非常方便的快捷方式我以前用过它,但有两件事在起作用:2004年(这本书出版的那一年)在软件工程中是很久以前的,从那时起有了一个新的语言标准。我不禁想知道:

  • 这种分类是否仍然相关
  • 上面的清单上有新的项目吗
  • 是否有另一种分类方法,由具有同等权威权力的作者进行分类
  • c++类有标准的分类法吗?(据我所知,这也可能是它)

注意:

我希望上面的4个问题有一个清晰的背景。为了避免基于观点的答案,有效的答案应该链接/提及验证其状态的示例、代码使用或标准摘录。

在这样的分类中,我还将Inner classes作为声明包含的类的类型。例如,发动机包含在车辆中:

class Vehicle{
public:
class Engine{
};
Engine* vehicle_engine;
};

但是它降低了代码的可读性。我更喜欢作文而不是内卷。区分以语言为特征的类类型和设计模式并不是那么容易。例如,Singleton是否属于该类别?

分类在C++11中也是相关的,OOP的基本前提没有改变。答案的范围必须是有限的,因为您明确询问类类型,不过,我会将函数(包括lambdas)添加到列表中。

同样,现在枚举是强类型的(用enum class关键字指定),它们可以说在万神殿中有自己的位置。