类的类型可由类说明符定义,它在语法的 声明说明符序列 中出现。类说明符拥有下列语法:

    类关键词 - class、、union 之一
    attr(C++11) - 可选的任意数量的序列
    类头名 - 被定义的类名。可选地前接 嵌套名说明符(名字和作用域解析运算符的序列,以作用域解析运算符结尾),可选地后随关键词 final。可以忽略该名字,此情况下类是无名的(注意无名类不可为 final)
    基类说明符序列 - 一或多个父类及其各自所用的继承模型的列表(见)
    成员说明 - 访问说明符、成员对象和成员函数的声明和定义的列表(见类定义

    类关键词 和 class 在 C++ 中不可分,除了默认和默认继承模式,当类定义使用 struct 类关键词则为 public,若类定义使用 class 类关键词则为 。classstruct 均可用于。

    使用类关键词 union 所得的是联合体定义,它定义在同一时刻只保有其一个数据成员的类。

    类可拥有下列种类的成员

    1)

    a) 非静态数据成员,包括位域

    2) 成员函数

    a)

    b) 静态成员函数

    3) 嵌套类型

    a) 定义于类定义之中的及枚举

    b) 既存类型的别名,以 或类型别名声明定义

    4) 定义于类中的所有无作用域枚举的

    5) 成员模板(变量模板、 (C++14 起)类模板或函数模板)可出现于任何非局部 class/struct/union 定义体内。

    所有成员都在类定义中一次性定义,不能向已定义的类添加成员(这不同于命名空间的成员)

    T 的成员,若它是静态数据成员、成员函数、成员类型、成员模板、无作用域枚举的枚举项、匿名成员联合体的成员,则不能使用 作为其名字。然而,非静态数据成员可使用名称 T ,只要无用户声明的构造函数。

    声明或继承了至少一个成员函数的类是多态的。此类型的对象是多态对象,并拥有作为其对象表示一部分存储的运行时类型信息,可以由 和 typeid 查询之。虚成员函数参与动态绑定。

    声明或继承了至少一个纯虚函数的类是。不能创建此类型的对象。

    一些成员函数是特殊的:某些条件下,即使用户不定义,编译器也会定义它们。它们是: