C++基础 class、struct、union详细

C++基础 class、struct、union详细攻略

1. class

在C++中,class是一种构造用户定义的数据类型的方式。class是C++的一个重要特性,是面向对象编程的基础。class可以定义一个包含数据和函数的完整类型。可以在其中定义成员变量和成员函数,也可以使用访问限制符定义共有成员和私有成员。

C++中,使用class定义一个类时,可以省略访问限制符,默认是private。访问限制符包括public、protected和private。与struct不同的是,class的默认访问控制是“private”,而struct的默认访问控制是“public”。

以下是一个使用class定义一个类的示例:

class Person {
private:
    string name;
    int age;

public:
    void setName(string name) { this->name = name; }
    void setAge(int age) { this->age = age; }
    string getName() { return this->name; }
    int getAge() { return this->age; }
};

以上示例定义了一个名为Person的类,它有姓名和年龄两个私有成员变量和四个公有成员函数。

2. struct

struct是C++中的另一种构造用户定义的数据类型的方式。与class类似,struct也可以定义包含数据和函数的完整类型。可以在其中定义成员变量和成员函数,也可以使用访问限制符定义共有成员和私有成员。

与class不同的是,struct的默认访问控制是public,因此,struct中定义的所有成员默认都是公有的。虽然两种方式都可以定义类,但一般来说,struct更适合仅仅包含数据的对象,而class更适合需要封装数据和函数的对象。

以下是一个使用struct定义一个类的示例:

struct Point {
    double x;
    double y;

    void print() {
        cout << "x: " << x << ", y: " << y << endl;
    }
};

以上示例定义了一个名为Point的结构体,它有私有成员变量x和y和一个公有成员函数print()。

3. union

union是C++中的一种特殊的复合数据类型,同样可以定义包含数据的完整类型。在C++中,union的所有成员共享同一块内存空间,并且可以在不同的时间访问同一块内存。这使得union的大小等于其中最大的成员大小。通常,union用于节省空间,因为程序中只需要使用其中的一个成员。

以下是一个使用union定义一个类的示例:

union Number {
    int i;
    float f;
    double d;

    Number() {}
};

以上示例定义了一个名为Number的联合体,它有三个成员变量(int i,float f和double d)。由于union的成员变量是共享同一块内存空间,因此使用一个构造函数来给成员变量赋初值并不合适。

阅读剩余 30%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++基础 class、struct、union详细 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • ContentType控制输出的类型是否区分大小写

    ContentType是一个HTTP头部字段,用于指示服务器返回的响应的内容类型。在某些情况下,ContentType的值是否区分大小写可能会影响到服务器的行为。 在大多数情况下,ContentType的值是不区分大小写的,这意味着不同的大小写形式都会被服务器接受并处理。例如,以下两个ContentType的值被认为是相同的: Content-Type: t…

    other 2023年8月17日
    00
  • Android中FoldingLayout折叠布局的用法及实战全攻略

    Android中FoldingLayout折叠布局的用法及实战全攻略 介绍 FoldingLayout是Android中一个强大的布局,可以实现折叠效果,给应用界面带来独特的交互体验。本攻略将详细介绍FoldingLayout的用法,并提供两个示例说明。 用法 首先,在项目的build.gradle文件中添加以下依赖项: implementation ‘co…

    other 2023年9月5日
    00
  • 只需2步 win10自定义文件夹或文件位置

    请看下面的攻略。 一、打开资源管理器选项 首先,你需要打开文件资源管理器。 在文件资源管理器的顶部菜单栏中,找到“视图”选项并点击它。 在“视图”选项的下拉菜单中,找到“选项”并点击它。 在打开的“文件夹选项”窗口中,选择“查看”选项卡。 在“高级设置”中,找到“统一访问地址栏(U)”选项,勾选它,然后点击“应用”和“确定”按钮。 这时,你就成功打开了资源管…

    other 2023年6月25日
    00
  • Win10 20H1快速预览版18894怎么手动更新升级?

    要手动更新升级Win10 20H1快速预览版18894,可以根据以下步骤进行操作: 打开系统设置:在任务栏输入“设置”,点击弹出的“设置”图标,或按下Win键+I键快捷打开系统设置页面。 进入“更新和安全”页面:在设置页面中,点击“更新和安全”选项,进入系统更新相关设置页面。 手动检查更新:在更新和安全页面中,点击“检查更新”按钮,系统将开始手动检查是否有可…

    other 2023年6月27日
    00
  • Linux如何基于AIDE检测文件系统完整性

    Linux可以通过AIDE(Advanced Intrusion Detection Environment)工具来检测文件系统的完整性。AIDE可以定期巡检文件系统,记录文件的属性信息(比如文件的名字、权限、MD5值、SHA1值等),并生成相关的校验和值。通过比对前后两个时间段的校验值,可以检测出文件系统中是否存在被修改或被删除、新增的文件。下面详细讲解L…

    other 2023年6月27日
    00
  • vue-cli3+ts+webpack实现多入口多出口功能

    “vue-cli3+ts+webpack实现多入口多出口功能”需要做如下几个步骤: 初始化项目 使用vue-cli3初始化一个vue项目,这个项目作为主项目,用于引入其他模块。 vue create my-project 添加模块 在主项目中,通过npm或yarn安装其他需要接入主项目的模块,例如我们需要接入一个blog模块,通过以下命令安装: npm in…

    other 2023年6月27日
    00
  • 超详细的CMD DOS下符号的作用参考第2/2页

    我来详细讲解一下“超详细的CMD DOS下符号的作用参考第2/2页”。 该攻略提供了Windows命令行环境(CMD或DOS)下各个符号的作用及用法,包括命令行开头的符号、文件路径中使用的符号、命令参数等等。这个攻略非常适合初学者或者对命令行不太熟悉的人使用。 接下来,我将提供两个示例来解释如何在命令行环境下使用这些符号: 示例一:查找文件想要在命令行环境下…

    other 2023年6月26日
    00
  • pythonyaml模块

    以下是关于“Python yaml模块”的完整攻略,包括基本知识和两个示例。 基本知识 YAML是一种轻量级的数据序列化格式,它使用可读性强文本格式来表示数据。在Python中,可以使用yaml模块来读取和写入YAML格式的数据。 yaml模块提供了load()和dump()函数读取和写入YAML格式的数据。load()函数用于将YAML格式的数据转为Pyt…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部