结构体(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)

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

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值