类和结构体的区别

类和结构体的区别

Class和Structure

摘自百度知道的回答。

区别:

1.类型不同:结构是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作。

2.存储不同:结构使用栈存储,而类使用堆存储。栈的空间相对较小.但是存储在栈中的数据访问效率相对较高.堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低。

3.作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性。

4.关键字不同:在类中可以使用但是在结构中限制使用的关键字有:abstract、sealed、protected;StaTIc关键字可以用在类名前面用来声明静态类,但是不能用在struct前面,不存在静态结构。

5.初始化不同:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。

类的实质是一种数据类型,类似于int、char等基本类型,不同的是它是一种复杂的数据类型。因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

在C语言中,为了实现我想要的结构,可以自定义定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的成员,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。

在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C++中,对结构体进行了扩展,C++的结构体可以包含函数。

向左转|向右转

扩展资料:

在计算机科学中,在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。根据数据元素之间关系的不同特性,通常分为4类基本结构:线性结构、树形结构、集合、图状结构或网状结构。

类是对现实生活中一类具有共同特征的事物的抽象。如果一个程序里提供的类型与应用中的概念有直接的对应,这个程序就会更容易理解,也更容易修改。

一组经过很好选择的用户定义的类会使程序更简洁。此外,它还能使各种形式的代码分析更容易进行。特别地,它还会使编译器有可能检查对象的非法使用。

参考资料:百度百科——结构

参考资料:百度百科——类

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swift 中的结构体(struct)都是用来封装数据和方法的型,但它们有一些区别。 1. 继承:支持继承(inheritance),可以继承其他的特性,而结构体不支持继承。 2. 引用型和值型:是引用型(reference type),结构体是值型(value type)。当你创建一个的实例并将其分配给变量或常量时,这个变量或常量实际上是对实例的引用。而当你将一个结构体分配给变量或常量时,这个变量或常量会包含该结构体的副本。因此,当你对引用型进行操作时,对该型的所有引用都会受到影响。而对于值型,每个实例之间是独立的,操作一个实例不会影响其他实例。 3. 构造函数:有自己的构造函数(initializer),而结构体的构造函数是自动生成的。在中,你可以指定一个或多个构造函数来初始化的实例。但是结构体的构造函数是根据结构体的属性自动生成的,你也可以自定义结构体的构造函数。 4. Deinitializer:有自己的析构函数(deinitializer),而结构体没有析构函数。 5. 内存管理:Swift 中的使用引用计数(reference counting)来管理内存,而结构体则是在栈上分配内存。由于引用型是在堆上分配内存,所以需要更多的内存管理,包括对象引用计数的增加和减少等操作。 总之,结构体都有其自己的优缺点,根据实际情况选择使用哪种型来封装数据和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值