Classes
班
类是用户定义的类型.
类类型由类说明符定义,该类类型出现在声明语法。类说明符具有以下语法:
class-key attr class-head-name base-clause { member-specification } | (1) | |
---|
class-key | - | one of class, struct, union |
---|---|---|
attr(C++11) | - | optional sequence of any number of attributes |
class-head-name | - | the name of the class that's being defined. Optionally prepended by nested-name-specifier (sequence of names and scope-resolution operators, ending with scope-resolution operator), optionally followed by keyword final. The name may be omitted, in which case the class is unnamed (note that unnamed class cannot be final) |
base-clause | - | optional list of one or more parent classes and the model of inheritance used for each (see derived class) |
member-specification | - | list of access specifiers, member object and member function declarations and definitions (see class definition) |
类键struct
和class
在C++中是不可区分的,除非默认的存取方式违约继承模式是public
如果类声明使用struct
类键和private
如果类声明使用class
班级钥匙。双双class
和struct
可以在类定义...
类键的使用union
结果联合定义,它定义了一个类,该类一次只包含其一个数据成员。
类可以有以下类型的成员。
1%29数据成员
a%29非静态数据成员,包括位字段...
B%29静态数据成员
2%29名成员职能
A%29非静态成员函数
B%29静态成员函数
3%29种嵌套类型
A%29嵌套类和枚举在类定义中定义
B%29种现有类型的别名,定义为胡枝子f或类型别名声明
C%29它自己定义中的类的名称作为其自身的公共成员类型别名,其目的是查找%28,除非用于命名构造器%29:这被称为注入类名称
4%29枚举器从类中定义的所有非作用域枚举中提取。
5%29成员模板%28变量模板,%28自C++14%29类模板或函数模板%5月29日出现在任何非本地类/struct/UNION的主体中。
所有成员都是在类定义中一次性定义的,它们不能添加到已经定义的类%28中,与命名空间%29的成员不同。
一个阶级的成员T
不能使用T
如果成员是静态数据成员、成员函数、成员类型、成员模板、未限定范围枚举的枚举数、成员匿名联合的成员,则作为其名称。但是,非静态数据成员可以使用名称。T
只要没有用户声明的构造函数。
至少有一个声明或继承的类虚拟成员函数是多态
此类型的对象为多态
对象并将运行时类型信息存储为对象表示形式的一部分,这些信息可以用动态[医]铸造和类型虚拟成员函数参与动态绑定。
具有至少一个声明或继承的纯虚拟成员函数的类是抽象类无法创建此类型的对象。
具有司法官构造函数是LiteralType
*这类对象可以由司法官函数在编译时执行。
有些成员函数是特殊的:在某些情况下,它们是由编译器定义的,即使不是由用户定义。它们是:
- 默认构造函数
- 复制构造函数
- 移动构造函数%28自C++11%29
- 复制赋值算子
- 移动赋值算子%28自C++11%29
- 破坏者
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。