中易网

类和结构的区别

答案:5  悬赏:70  
解决时间 2021-01-20 10:56
类和结构的区别
最佳答案
区别:
1.类型不同:结构是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作。
2.存储不同:结构使用栈存储(Stack Allocation),而类使用堆存储(Heap Allocation)。栈的空间相对较小.但是存储在栈中的数据访问效率相对较高.堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低。
3.作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性。
解释:
类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存

结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。




扩展资料:

结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用。
两者在本质上都属于数据结构。封装着一组总体作为一个逻辑单位的数据和行为。 数据和行为是该类或结构的“成员”,它们包括各自的方法、属性和事件等。

与类不同的是,结构体用struct 修饰;结构体中的实例字段不能自定义默认值,而类可以,编译器会隐式的给出结构体和类的默认构造函数,但是结构体的默认构造不能显示给出,不然编译器会报错。
当类有自定义的构造函数时,默认构造会被隐藏,要想使用默认构造,必须显示给出;结构体的自定义构造函数必须初始化所有的实例字段和未初始化的属性,而类不是。
类在传递的时候,传递的内容是位于托管内存中的位置,结构体在传递的时候,传递的内容是位于程序堆栈区的内容。当类的传递对象修改时,将同时修改源对象,而结构体的传递对象修改时,不会对源对象产生影响。
全部回答

1、类型不同:结构是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作。
2、存储不同:结构使用栈存储,而类使用堆存储。栈的空间相对较小.但是存储在栈中的数据访问效率相对较高.堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低。
3、作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性。
4、初始化不同:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。

扩展资料:
类的特性:
1、封装性
将数据和操作封装为一个有机的整体,由于类中私有成员都是隐藏的,只向外部提供有限的接口,所以能够保证内部的高内聚性和与外部的低耦合性。用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员,能够增强安全性和简化编程。
2、继承性
继承性更符合认知规律,使程序更易于理解,同时节省不必要的重复代码。
3、多态性
同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
基本结构的构成:
在计算机科学中,根据数据元素之间关系的不同特性,通常分为4类基本结构。
集合
集合是指结构中的数据元素之间除了“同属一个集合”的关系外,别无其他关系。例如这些数据项的类型是相同的。
线性结构
线性结构是指结构中的数据元素之间存在一个对一个的关系。常用的线性结构有:线性表,栈,队列,双队列,数组,串。
树形结构
树形结构是指结构中的数据元素之间存在一个对多个的关系。在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一个前驱结点。叶子结点没有后续结点,其余每个结点的后续节点数可以是一个也可以是多个。
经典数据结构中的各种树状图是一种典型的树形结构:一颗树可以简单的表示为根, 左子树, 右子树。 左子树和右子树又有自己的子树。
图状结构或网状结构
图状结构或网状结构是指结构中的数据元素之间存在多个对多个关系。网状结构(reticular formation)分为全连接网状和不完全连接网状两种形式。全连接网状中,每一个节点和网中其它节点均有链路连接。
不完全连接网中,两节点之间不一定有直接链路连接,它们之间的通信,依靠其它节点转接。这种网络的优点是节点间路径多,碰撞和阻塞可大大减少,局部的故障不会影响整个网络的正常工作,可靠性高;网络扩充和主机入网比较灵活、简单。
但这种网络关系复杂,建网不易,网络控制机制复杂。广域网中一般用不完全连接网状结构。
参考资料:百度百科-结构
参考资料:百度百科-类

区别:
1.类型不同:结构是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用。那么结构体就是当成值来使用的,类则通过引用来对实际数据操作。
2.存储不同:结构使用栈存储,而类使用堆存储。栈的空间相对较小.但是存储在栈中的数据访问效率相对较高.堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低。
3.作用不同:类是反映现实事物的一种抽象,而结构体的作用只是一种包含了具体不同类别数据的一种包装,结构体不具备类的继承多态特性。
4.关键字不同:在类中可以使用但是在结构中限制使用的关键字有:abstract、sealed、protected;StaTIc关键字可以用在类名前面用来声明静态类,但是不能用在struct前面,不存在静态结构。
5.初始化不同:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。
类的实质是一种数据类型,类似于int、char等基本类型,不同的是它是一种复杂的数据类型。因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。
在C语言中,为了实现我想要的结构,可以自定义定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的成员,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。
在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C++中,对结构体进行了扩展,C++的结构体可以包含函数。

扩展资料:
在计算机科学中,在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。根据数据元素之间关系的不同特性,通常分为4类基本结构:线性结构、树形结构、集合、图状结构或网状结构。
类是对现实生活中一类具有共同特征的事物的抽象。如果一个程序里提供的类型与应用中的概念有直接的对应,这个程序就会更容易理解,也更容易修改。
一组经过很好选择的用户定义的类会使程序更简洁。此外,它还能使各种形式的代码分析更容易进行。特别地,它还会使编译器有可能检查对象的非法使用。
参考资料:百度百科——结构
参考资料:百度百科——类

1、存储类型:结构是值类型,存储在栈上。类是引用类型,存储在栈上和堆上,堆上存储真实数据,栈上存储存储地址,修改一个引用的值,另一个相同的引用的值就会发生改变。
2、继承性:类是可以继承的,它可以继承其他的类或者接口,也可以被继承,并且,类的许多特性是通过继承来展现的,要阻止类的继承,必须显示的声明sealed。结构没有继承:它不能继承另一个结构或者类,也不能被继承。也正因为如此,结构不能有抽象成员。虽然结构没有明确的用sealed声明,可是结构是隐式的。结构能够继承接口,方法和类继承接口是一样的。
3、初始化:类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。
4、构造函数:类和结构都有自己默认的构造函数。在类中,一旦我们编写了带参数构造函数,默认构造函数就不存在了。当我们要调用不带参数的构造函数来初始化对象时,我们必须再自己编写一个不带参数的构造函数。但是在结构中,始终存在一个不带参数的默认构造函数,并且,这个构造函数是不可替代的,不能重写,也不能覆盖,在结构中,我们只能编写带参数的构造函数,不能编写不带参数的构造函数。
5、析构函数:类有析构函数,但是结构没有析构函数。
6、关键字:在类中可以使用但是在结构中限制使用的关键字有:abstract、sealed、protected;StaTIc关键字可以用在类名前面用来声明静态类,但是不能用在struct前面,不存在静态结构。

扩展资料
使用说明
结构存储在栈中,而栈有1个特点,就是空间较小,但是访问速度较快,堆空间较大,但是访问速度相对较慢。所以当我们描述1个轻量级对象的时候,可以将其定义为结构来提高效率。比如点,矩形,颜色,这些对象是轻量级的对象,因为描述他们,只需要少量的字段。当描述1个重量级对象的时候,我们知道类的对象是存储在堆空间中的,我们就将重量级对象定义为类。 他们都表示可以包含数据成员和函数成员的数据结构。
与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象。尽管可能将一个点表示为类,但结构在某些方案中更有效。在一些情况下,结构的成本较低。例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。所以结构适合表示1个轻量级对象。
参考资料百度百科-类

类与结构是有区别的
虽然两者意思相近,但是结构不能被继承,类是可以继承的。

语法区别:
结构体内成员的属性默认是 public 而 class 是默认为 private
应用区别:
结构体不能继承,派生,而 class 可以。
举例:
这是……一类。(类通常是放在一个泛指名词末端)
这东西的结构是……(可以看到结构是对特定事物的成分和构造做分析)


扩展资料:

结构方式

结构方式是总体中的分体结合构成总体的方式。主要有文字的结构方式、段落的结构方式和文章的结构方式。文字结构方式,就是文字组成的方式。

参考资料:百度百科:结构 百度百科_类和对象



我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
打400电话要钱吗
有个成语叫什么灯什么火
设计在结施图纸上的门过梁待主体完成后做叫二
机票儿童票规定是什么?
iphone3gs 3号光感排线接口处有折痕了,是不
一个人如果没有竞争对手,就会怎么样
★+★+★+★=△ ★+△=25 ★是多少 △是多少
有没有什么可以翻译英语的软件,就是把照片拍
请问下想验配角膜塑形镜,需要自身满足什么条
天龙八部月老在哪
公公去世了离婚后的儿媳妇该不该去参加葬礼
我们好像两条平行线,……我在你的左边你在右
DNF满级附魔师做什么宝珠赚钱
直布罗坨海峡沟通的是那个海和那个洋
时间流逝,友谊长存是什么意思?送给长辈朋友
推荐资讯
求助离散数学题。。。16题
外贸出口的合同日期,发票和装箱单,提单日期,
谁了解貔貅是什么材质的好
php工程师是什么意思
love青春时尚女装地址有知道的么?有点事想过
玩魔兽世界送暗黑3白金币怎么领取
IC测试中如何能看懂测试程序?
从红梅公交中心站到新北区文笔山庄公交怎么走
服务行业激励的口号有哪些?
锅炉操作工需要做职业健康体检吗
咸鸭蛋胆固醇高吗?
停车场(滴水岩)地址在什么地方,我要处理点事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?