欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 结构体(struct)、联合体(union)和类(class)

结构体(struct)、联合体(union)和类(class)

2025/2/25 1:12:01 来源:https://blog.csdn.net/weixin_67028876/article/details/141172531  浏览:    关键词:结构体(struct)、联合体(union)和类(class)

一、结构体

结构体是一种用户自定义的数据类型,它允许多个不同类型的数据项组合成一个单一的类型。结构体中的每个数据称为成员,结构体可以包含其他结构体作为成员。结构体主要用于组织数据,但不包含函数。

结构体想必是最常用的了。定义语法如下:

#include<bits/stdc++.h>
using namespace std;
struct node{int x,y;
};
node a[10000];
int main(){a[1].x=1;a[1].y=2;return 0;
}

特点

1.结构体中的成员可以有不同的数据类型。

2.结构体成员可以是另一个结构体。

3.结构体通常用于组织数据,但不包含函数。

4.结构体是值类型(在C和C++中),即它们是按值传递的。

 二、联合体

联合体是一种特殊的数据类型,它允许你在相同的内存位置存储不同的数据类型。联合体的大小是其最大成员的大小,因为联合体中的所有成员都共享相同的内存空间。这意呀着在任何给定时间,只有联合体的一个成员是有效的。

初赛要考,定义语法如下:

#include<bits/stdc++.h>
using namespace std;
union MyUnion {int x;long long y;
} x;

特点

1.联合体中的所有成员都从同一个内存位置开始。

2.联合体的总大小是其最大成员的大小。

3.联合体通常用于节省内存,或当你知道变量在不同时间将持有不同类型的数据时。

4.联合体不是类型安全的,因为编译器不会检查你是否正确地访问了当前有效的成员。

三、类 

类是一种用户定义的类型,它是面向对象编程(OOP)的核心概念。类封装了数据(属性)和操作这些数据的方法(函数)。与结构体不同,类支持封装、继承和多态等面向对象特性。类在C++、Java、C#、Python等多种编程语言中广泛使用。

定义语法:

class Object {public://公共的int weight;int value;void print() {cout << weight << endl;return;}
};

特点

1.类可以包含数据成员(属性)和成员函数(方法)。

2.类支持封装,即数据隐藏。

3.类支持继承,允许创建基于现有类的新类。

4.类支持多态,即允许通过基类的指针或引用来调用派生类的成员函数。

5.类是引用类型(在C++和C#中),即它们是按引用传递的.

Tips:按引用传递,函数接收的是实际参数的引用(或者说是地址),而不是参数值的副本。这意味着,在函数内部对参数所做的任何修改都会直接影响到原始数据。

四、异同对比

结构体、联合体和类
结构体(Struct)联合体(Union)类(Class)
用途组织数据节省内存,共享内存空间封装数据和行为,面向对象编程
内存分配每个成员有自己的内存空间所有成员共享同一段内存空间对象有自己的内存空间,包括数据成员和方法表
特性不支持继承不支持继承支持封装、继承
访问权限C中无默认访问权限,C++中默认为public无访问权限概念,所有成员共享内存默认为private,可设置为public、protected
面向对象非面向对象(C中)。可面向对象(C++中)非面向对象面向对象

五、关于封装和继承

封装(Encapsulation)

封装是指将对象的属性和操作这些属性的方法(或称为函数)捆绑在一起,形成一个独立的单元,即类。在封装的过程中,对象的内部实现细节被隐藏起来,只对外公开类的公有成员,从而控制对对象属性的访问和修改。这样做的目的是保护对象的数据不被随意修改,同时保证对象的使用者只需通过公开的接口与对象交互,而无需关心对象内部的实现细节。封装通过类的访问控制符(如public、private、protected)来实现,确保对数据的访问和操作受到限制。

继承(Inheritance)

继承是面向对象编程中的一个重要特性,它允许一个新的类(子类)继承一个已存在的类(父类)的属性和方法。通过继承,子类可以重用父类的代码,从而避免重复编写相同的代码。子类不仅可以继承父类的属性和方法,还可以扩展或修改这些属性和方法,以满足新的需求。此外,继承还有助于建立类之间的层次关系,使得类的组织结构更加清晰。在面向对象编程中,继承是实现代码重用和多态性的重要手段。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词