专业编程基础技术教程

网站首页 > 基础教程 正文

C++ struct和class的选择 c++中struct和class

ccvgpt 2024-12-30 02:19:00 基础教程 2 ℃

C++编程中,你是否有为 我到底该写个struct还是class 而苦恼过?如果你到现在还不知道该如何选择,那么请求继续阅读,下文或许能给你些建议。

问题的产生

C++语言继承了 C语言的 struct,并且加以扩充。在 C语言中,struct 是只能定义数据成员,而不能定义成员函数的。而在 C++ 中,struct 类似于 class,既可以定义数据成员,又可以定义成员函数。

在 C++ 中,struct 与 class 基本是通用的,唯一不同的是如果使用 class 关键字,类中定义的成员变量或成员函数默认都是 private 属性的,而采用 struct 关键字,结构体中定义的成员变量或成员函数默认都是 public 属性的。

C++ struct和class的选择 c++中struct和class

在 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:
    ...
};

Tags:

最近发表
标签列表