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:...};
推荐阅读
- C++的逐层抽象:从结构体到类、模板
- URI 和 URL 有什么区别?
- 交换机三种端口模式Access、Hybrid和Trunk的详解
- 玉蝴蝶和什么起泡水,玉蝴蝶泡水喝的禁忌
- 什么是姓氏堂号?宗族的字辈和堂号的来历
- 中药的四气和五味?中药中的四气五味
- 三国陈宫为什么不跟刘备?吕布和陈宫关系好不好
- 佛印和苏东坡的故事苏小妹为什么说苏东坡输了?苏东坡 苏小妹和佛印禅师的故事
- 荷韵茶叶多少钱罐,勐库邦马邦东和永德茶叶特点和区别
- 铁观音冲泡方法和时间,铁观音冲泡方法