国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C#類可以自引用(建立在類是引用類型的基礎(chǔ)上)

2019-11-17 03:59:02
字體:
供稿:網(wǎng)友

原則:

1、C++的類類型是值類型,也就是說實(shí)例化個(gè)類對(duì)象的時(shí)候,內(nèi)存分配在棧上。

這樣如果類類型這樣定義的時(shí)候

class A

{

     public:

         int i;

         A a;

}

就會(huì)陷入無(wú)限的死循環(huán),因?yàn)閷?shí)例化一個(gè)A的對(duì)象object的時(shí)候,A要根據(jù)成員類型去計(jì)算這樣一個(gè)對(duì)象要占用的內(nèi)存空間(數(shù)據(jù)成員根據(jù)類型確定,成員函數(shù)的代碼存一份在exe映射到內(nèi)存,用一個(gè)指針指向內(nèi)存地址即可,另外再加一些類描述信息,但sizeof不顯示這部分描述信息的內(nèi)存占用),遇到自身類型的對(duì)象a的時(shí)候,又去計(jì)算a所用的內(nèi)存空間,而a又是個(gè)A類型,所以重復(fù)進(jìn)行。

所以在C++中

可以包含自身類型的指針(鏈表中經(jīng)常這樣使用)

class A

{

     public:

         int i;

         A * pa;

}

指針變量所占的內(nèi)存空間是容易確定的,幾位的機(jī)器字長(zhǎng),指針變量即占用多少空間

2、C#中類類型是引用類型,本質(zhì)是個(gè)指針

所以C#中所有類對(duì)象本身都是4字節(jié)(32位機(jī)),包含一個(gè)內(nèi)存地址,這個(gè)地址指向堆內(nèi)存空間

class A

{

public int i;

public A a;

}

A object = new A();

object本身占用4字節(jié)內(nèi)存,存放堆內(nèi)存地址,這塊內(nèi)存的大小是8字節(jié)(int 4字節(jié),a也是四字節(jié)),當(dāng)成員a實(shí)例化的時(shí)候,只是a的內(nèi)容不是null了,存放堆內(nèi)存中的另一個(gè)地址,指向一塊8字節(jié)內(nèi)存空間。

因?yàn)槟艽_定A的一個(gè)對(duì)象占用多少內(nèi)存空間(4字節(jié),C#所有類對(duì)象都是占4字節(jié),在32位機(jī)中),所以可以定義


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建宁县| 雷州市| 吉安县| 河源市| 县级市| 淮南市| 宁安市| 收藏| 九龙县| 鄂托克旗| 自治县| 白山市| 富平县| 进贤县| 海口市| 金沙县| 绥阳县| 泾源县| 遂川县| 景洪市| 和政县| 重庆市| 贵州省| 上高县| 诸暨市| 重庆市| 澄江县| 克什克腾旗| 台南市| 晋江市| 亚东县| 昭觉县| 苍溪县| 竹北市| 色达县| 盐城市| 蒲城县| 阿克苏市| 和政县| 乌兰县| 沭阳县|