结构体和类

只能用 struct 定义那些用于储存数据的被动对象. 其他情况应该使用 class. 注意:C++ 中 structclass 关键字的含义几乎一样. 我们自己为这两个关键字赋予了不同的语义, 所以您要选择合适的关键字.

应该用结构体定义用于储存数据的被动对象, 其中可能包含常量成员. 所有成员都必须是公共的. 结构体的成员之间不能存在不变式 (invariant) 关系, 因为用户直接访问这些成员时可能破坏不变式. 结构体可以有构造函数、析构函数和辅助方法, 但是这些函数不能要求或实现不变式.

如果需要实现更多功能或不变式约束, 或者该结构体用途广泛并且会在未来不断更新, 那么类更合适. 在不确定的时候, 应该选择类.

为了与 STL 保持一致, 特征 (trait)、 模板元函数 (template metafunction) 、仿函数 (functor) 等无状态的类型可以使用结构体而不用类.

注意:类和结构体的成员变量使用不同的命名规则,C++中的struct只作为数据集合,成员变量使用下划线(_)结尾。