C++ struct和class的选择

C++编程中 , 你是否有为 我到底该写个struct还是class 而苦恼过?如果你到现在还不知道该如何选择 , 那么请求继续阅读 , 下文或许能给你些建议 。
问题的产生【C++ struct和class的选择】C++语言继承了 C语言的 struct , 并且加以扩充 。在 C语言中 , struct 是只能定义数据成员 , 而不能定义成员函数的 。而在 C++ 中 , struct 类似于 class , 既可以定义数据成员 , 又可以定义成员函数 。
在 C++ 中 , struct 与 class 基本是通用的 , 唯一不同的是如果使用 class 关键字 , 类中定义的成员变量或成员函数默认都是 private 属性的 , 而采用 struct 关键字 , 结构体中定义的成员变量或成员函数默认都是 public 属性的 。
在 C++ 中 , 没有抛弃 C语言中的 struct 关键字 , 其意义就在于给 C 语言程序开发人员有一个归属感 , 并且能让 C++ 编译器兼容以前用 C 语言开发出来的项目 。
选择用struct还是class可以采用下面的编程规范:
【强制】class表示被封装的用户自定义类型 , 不公开定义非静态数据成员 , 一般通过成员方法进行交互 。
【建议】struct表示数据的简单集合 , 公开定义数据成员 , 只定义用于初始化数据成员的方法(比如:构造/析构函数 , initialize(), reset(), validate()) 。
【解释】

  • 在 C++ 中 struct 与 class 只有默认成员权限上的差别 。但 struct 是从 C 语言中借来的概念 , 因此应该尽可能保持其语义与 C 语言中的保持一致——单纯的数据集合 。
【示例】
// 简单的数据聚合 , 没有动作struct Coordinate {int x;int y;int z;};// 有动作的对象class Cat {public:void meow();private:...};



    推荐阅读