亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c++:最強大的.net語言之對象構造.txt

?? 介紹一些有關c/c++的文章 例如:VC++6.0 下搭建 wxWidgets 開發環境 最強大的.NET語言之對象構造 最強大的.NET語言之內存與資源 最強大的.NET語言之裝箱 C++
?? TXT
字號:
C++:最強大的.NET語言之對象構造 
 
 
文章錄入:7747.Net    責任編輯:7747.Net  更新時間:2006-9-21 10:38:07 1219 
 【字體:小 大】
 
 
簡介

  Visual C++開發小組花了大量的時間用于聽取用戶的意見,在對 .NET和C++經過仔細考量之后,決定在Visual C++ 2005中重新設計對通用語言運行時庫(CLR)的支持,此項重新的設計被稱為"C++/CLI",它將為使用及編寫CLR類型提供更自然的語法。在本文中,主要探討了新的語法,并將之與C#和托管C++這兩個CLR平臺上極其相近的語言進行比較,在文中也會適當地以圖表給出其與本地C++的相似之處。

  通用語言運行時庫(CLR)包括了一組規范,其是Microsoft .NET的基礎,也是CLI的Microsoft版本實現。C++/CLI語言設計的目標是為了對CLI提供更自然的C++支持,而Visual C++ 2005的編譯器則在CLR上實現了C++/CLI。

  當在仔細研究了Visual C++ 2005編譯器和C++/CLI語言設計之后,就會發現它們傳達了兩條重要的訊息;首先,Visual C++把自己定位于在CLR平臺上的最低級編程語言,(看起來似乎沒有必要使用其他語言了--包括MSIL);其次,.NET編程應與本地C++編程一樣自然。

  本文針對C++程序員,但并不想說服你放棄C#或者Visual Basic .NET。如果你非常喜歡C++,并想繼續使用傳統C++提供的全部功能,而又想要C#般的編程效率,那本文正適合你。另外,本文并不是CLR或 .NET Framework的簡介,而把重點放在Visual C++ 2005是怎樣使你可以編寫 .NET Framework上更優雅和高效的代碼。 

  對象構造

  CLR定義了兩種類型:值類型和引用類型。值類型被設計用于可進行高效地分配和訪問,它們與C++的內置類型大體相似,你也能創建屬于你自己的類型,這就是Bjarne Stroustrup所稱的具體類型;另一方面,引用類型被設計用于提供面向對象編程所需的特性,可用于創建有著層次結構的類:例如派生類和虛擬函數。另外在CLR中,引用類型自始至終都提供了額外的運行時特性,如自動內存管理--通常稱為垃圾回收。同時,對引用類型和值類型,CLR也提供了精確的運行時類信息,這種特性通常被稱為反射。 

  值類型分配在堆棧上;而引用類型通常分配在托管堆中--這是由CLR垃圾回收機制所管理的堆。如果你在C++中編寫匯編代碼,如平時那樣,可在CRT堆中分配本地C++類型,在將來,Visual C++開發小組甚至允許你在托管堆中分配本地C++類型,畢竟,垃圾回收對本地類型來說,也是一個極具吸引力的主題。

  本地C++允許選擇在何處創建一個特定的對象,任何類型都可分配在堆棧或CRT堆中。

// 分配在堆棧上
std::wstring stackObject; 

// 分配在CRT堆中
std::wstring* heapObject = new std::wstring; 

  如上所示,在何處分配對象是獨立于類型的,主動權完全掌握在程序員的手中。另外,堆棧與堆的分配語法也是易于區別的。

  另一方面,C#通常是在堆棧上創建值類型,而在托管堆中創建引用類型。下例中使用的System.DateTime類型,被聲明為值類型。

// 分配在堆棧上
System.DateTime stackObject = new System.DateTime(2003, 1, 18); 

// 分配在托管堆中
System.IO.MemoryStream heapObject = new System.IO.MemoryStream(); 

  如上例所示,聲明對象的方式并沒有指出對象分配在堆棧上或托管堆中,其完全取決于程序編寫者和運行時庫。

  C++的托管擴展--簡稱為托管C++,可在本地C++代碼中混合托管代碼。為了遵循C++標準,C++被加入了擴展,以提供對CLR的全面支持。不幸的是,正是因為有太多的擴展,所以如果要用C++來編寫大量的托管代碼,就成了一件異常痛苦的事。

//分配在堆棧上
DateTime stackObject(2003, 1, 18);

//分配在托管堆中
IO::MemoryStream __gc* heapObject = __gc new IO::MemoryStream; 

  在C++程序員看來,在堆棧上分配一個值類型看起來非常正常,而在托管堆中的分配方式,看起來就有點怪:__gc是托管C++擴展中的一個關鍵字,有意思的是,在某些情況下,托管C++能推斷你的意思,所以上述例子可重寫為不帶__gc關鍵字。

//分配在托管堆中
IO::MemoryStream* heapObject = new IO::MemoryStream; 

  這樣看起來更像本地C++代碼了--但heapObject并不是一個真正的C++指針。C++程序員通常傾向于在指針中保存一個不變的數值,但垃圾回收器會在任何時候,在內存中移動對象。另一個不足之處是,不能僅僅依靠查看代碼,就能確定對象是分配在本地還是托管堆中,必須知道程序編寫者是怎樣定義一個類型的。

  C++/CLI為此引入了句柄的概念,以便把CLR對象引用與C++指針區別開來。少了C++指針含義的重載,語言中也少了很多歧義,另外,通過句柄,對CLR也能提供更加自然的支持,例如,你能在C++中,直接對引用類型使用操作符重載,因為此時句柄已經能支持操作符重載了。由于C++禁止指針操作符重載,如果沒有"托管"指針,這幾乎不可能實現。

//分配在堆棧上
DateTime stackObject(2003, 1, 18);

//分配在托管堆中
IO::MemoryStream^ heapObject = gcnew IO::MemoryStream; 

  相對于值類型聲明來說,和以前沒什么不同,但對引用類型聲明來說,變化卻很明顯,操作符 ^ 把變量聲明為對一個CLR引用類型的句柄。當垃圾回收器在內存中移動被引用的對象時,同時也會自動更新句柄的值。另外,它們是可重綁定的,這允許它們可像C++指針那樣指向不同的對象。另外需注意的一件事是,操作符gcnew已經代替了操作符new,清楚地指明了對象被分配在托管堆中。對托管類型,操作符new已經不能被重載(此處并非語帶雙關),只能把對象分配在CRT堆中,除非你提供自己重寫的new操作符。

  簡而言之:本地C++指針已經與CLR對象引用大不相同了。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜婷婷国产麻豆精品| 欧美少妇性性性| 欧美三级电影精品| 亚洲你懂的在线视频| 波多野结衣欧美| 日韩一卡二卡三卡| 麻豆精品国产91久久久久久| 欧美伦理视频网站| 三级在线观看一区二区| 欧美日韩国产综合草草| 亚洲精品国产a| 在线国产亚洲欧美| 亚洲国产精品天堂| 337p亚洲精品色噜噜| 午夜精品福利一区二区三区蜜桃| 欧美丝袜第三区| 亚洲第一久久影院| 欧美一级视频精品观看| 久久99精品网久久| 国产欧美精品一区二区色综合 | 国产精品一区二区91| 精品国产免费人成在线观看| 国产精品中文字幕日韩精品 | 制服丝袜亚洲精品中文字幕| 亚洲一区av在线| 欧美一区二区高清| 紧缚捆绑精品一区二区| 欧美激情在线观看视频免费| 成人av影视在线观看| 亚洲男人天堂av| 欧美疯狂做受xxxx富婆| 久久精品99国产精品| 国产日韩欧美综合在线| 成人性生交大片免费| 一区二区三区在线视频免费 | 欧美一区二区三区在线电影| 激情五月播播久久久精品| 亚洲国产成人在线| 在线免费精品视频| 精品一区二区三区不卡| 国产精品午夜电影| 欧美日韩久久一区二区| 国产精品一品视频| 综合中文字幕亚洲| 久久久91精品国产一区二区精品| 91蜜桃婷婷狠狠久久综合9色| 精品卡一卡二卡三卡四在线| 成人小视频免费观看| 亚洲欧美在线视频观看| 欧美精品乱人伦久久久久久| 精品一区二区精品| 亚洲欧美另类久久久精品| 日韩一区二区在线播放| 成人午夜在线免费| 丝袜亚洲另类欧美| 欧美国产精品中文字幕| 欧美在线你懂的| 国产91精品一区二区| 五月天婷婷综合| 中文字幕国产精品一区二区| 欧美少妇bbb| 国产精品一区二区无线| 日韩国产在线观看| 亚洲色欲色欲www| 久久久蜜臀国产一区二区| 在线观看av不卡| 成人污视频在线观看| 偷拍亚洲欧洲综合| 欧美日韩在线不卡| 亚洲一区二区三区在线播放| 欧美一a一片一级一片| 国产乱人伦偷精品视频不卡| 亚洲综合色噜噜狠狠| 中文av字幕一区| 日韩欧美一级二级三级| 在线欧美日韩精品| www.亚洲色图| 国产成人精品综合在线观看| 热久久一区二区| 一区二区久久久久| 日韩美女精品在线| 国产精品久久久久久久久动漫 | 久久精品男人天堂av| 欧美在线观看一区二区| 不卡区在线中文字幕| 成人性生交大片免费看中文| 99久久精品国产导航| 色综合久久天天综合网| 欧美三级日本三级少妇99| 555夜色666亚洲国产免| 69堂精品视频| 精品久久免费看| 日本一区免费视频| 中文字幕亚洲欧美在线不卡| 一区二区三区在线影院| 日韩经典中文字幕一区| 国产综合久久久久影院| av中文字幕不卡| 欧美性欧美巨大黑白大战| 欧美精品乱码久久久久久按摩| 欧美videossexotv100| 久久久久久久久久久久久夜| 国产精品麻豆欧美日韩ww| 夜夜揉揉日日人人青青一国产精品| 亚洲成年人影院| 久久99精品国产.久久久久久| 国产成人av电影在线观看| 93久久精品日日躁夜夜躁欧美| 91成人网在线| 日韩欧美亚洲另类制服综合在线| 国产欧美一区二区三区鸳鸯浴| 亚洲欧美电影一区二区| 日日摸夜夜添夜夜添精品视频| 激情六月婷婷久久| 91色九色蝌蚪| 777a∨成人精品桃花网| 国产精品三级电影| 午夜精品福利一区二区三区av| 国产在线观看一区二区| 色欲综合视频天天天| 欧美大片日本大片免费观看| 国产精品电影一区二区| 奇米精品一区二区三区在线观看一| 国产成人综合亚洲网站| 欧美日韩国产天堂| 国产精品亲子伦对白| 五月天精品一区二区三区| 不卡av在线网| 日韩视频免费直播| 亚洲视频免费看| 国产成人免费视频网站| 欧美日韩大陆一区二区| 中文字幕一区在线| 狠狠网亚洲精品| 欧美日精品一区视频| 亚洲欧洲另类国产综合| 国产综合一区二区| 91精品久久久久久久91蜜桃| 亚洲色图欧美偷拍| 精彩视频一区二区三区| 7777精品伊人久久久大香线蕉最新版| 国产精品乱人伦| 国产一区二区三区免费观看| 6080日韩午夜伦伦午夜伦| 一区二区三区中文字幕| 99久久久国产精品| 日本一区二区视频在线| 黑人巨大精品欧美黑白配亚洲| 日本一区二区三区电影| 久久综合av免费| 国产精品久久久久久久裸模| 韩国三级中文字幕hd久久精品| 欧美视频一区二| 亚洲九九爱视频| 菠萝蜜视频在线观看一区| 国产亚洲一区字幕| 国产乱一区二区| 久久久.com| 国产一区二区免费看| 日韩亚洲欧美成人一区| 日韩电影在线一区二区三区| 欧美日韩三级一区二区| 亚洲一区av在线| 欧美三区在线观看| 亚洲一卡二卡三卡四卡| 欧美日韩亚洲另类| 亚洲mv在线观看| 91麻豆精品91久久久久久清纯 | 国产成人福利片| 精品动漫一区二区三区在线观看| 美女精品自拍一二三四| 日韩一区二区三区高清免费看看| 肉色丝袜一区二区| 日韩一区二区影院| 九色综合狠狠综合久久| 日韩美女天天操| 精品一区在线看| 久久精品视频网| jlzzjlzz国产精品久久| 亚洲卡通欧美制服中文| 欧美专区亚洲专区| 午夜国产精品一区| 日韩午夜av一区| 久久精品国产精品青草| 久久美女高清视频| av不卡一区二区三区| 亚洲自拍偷拍麻豆| 88在线观看91蜜桃国自产| 久久www免费人成看片高清| 精品美女在线播放| 成人高清免费观看| 一区二区三区在线观看视频| 欧美日韩中文精品| 国产一区二区调教| 最新中文字幕一区二区三区| 欧美自拍丝袜亚洲| 日韩av网站在线观看| 国产日韩v精品一区二区| 国产成人亚洲综合a∨猫咪| 国产精品高潮久久久久无|