我对类和结构的一点理解

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 结构是一种轻量级的数据封装结构。


本人的疑惑点 :

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

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

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


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

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


posted @ 2012-01-08 00:00  sdgxboy  阅读(128)  评论(0编辑  收藏  举报