我对类和结构的一点理解

1 首先说明一下到目前为止我掌握的一点点的知识。

A 类是引用类型。 可以自动以默认的构造的函数。

B 结构是值类型,所有的值类型都是基于结构类型的, 不可以自动以默认的构造函数。

C 类和结构进行比较的时候都是比较他们的引用,但是为什么值类型进行比较的时候会认为他们是相同的,或者是不相同的那,这是因为值类型都是先了一个接口Tcompare 。这样即使是两个值类型的地址空间不一样,也不会认为他们是相同的,而是相同的,应该是实现了两个接口,另外一个接口是什么,有时间进行研究一下。

对字段的初始值有一个简便的语法支持,类是支持的,而结构是不支持的。 struct structStu { int i ; //int i =5 这么做是错的的写法 为什么这么写是错误的啊,因为struct不能自定义默认的构造函数。 int j ; public structStu(int ii) { i=ii ; //构造函数必须对所有的变量进行初始化。 j = ii; //如果没有这行代码,也是错误的。 } }D 什么情况下使用结构

和简单值类型具有相似的行为。 所有的简单值类型都是基于结构类型的。

数据成员大小在16kb一下。 因为结构的内存是分配在栈上的,如果频繁使用的话,会导致数据被大量的复制。

不需要特别的初始化操作。 这是因为结构不提供默认的构造函数。

F 结构是一种轻量级的数据封装结构。


本人的疑惑点 :

结构分配到堆上,和分配到栈上有啥区别 ?

栈 是系统分配的,先进后出的原这。地址是连续的,效率比较快。

堆 是程序员分配的,地址不连续,效率比较慢。


综上所述, : 结构是一个特殊的类型,没有理解清楚的情况下,少用,否则会带来程序资源的极大浪费,以及计算效率的低下。

以后有时间了 写一个结构的专题吧!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值