偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

引用C++/CLI中的棧對象總結(jié)

開發(fā) 后端
本文通過一些簡單的代碼講解C++/CLI中引用類型的棧對象的問題,下面對于這個(gè)問題進(jìn)行詳細(xì)的說明介紹,希望大家多多切磋。

C++/CLI是.NET平臺(tái)下的C++語言,當(dāng)然ISO C++的諸多語法保留下來,棧對象便是其一,但是他的語義發(fā)生了變化,通過處理對象的作用返回就會(huì)自動(dòng)釋放其所占用的內(nèi)存。

大家都知道.NET平臺(tái)與win32平臺(tái)最大的差別是托管內(nèi)存,對C#了解的同志都知道,在C#里面分有值類型(value type)與引用類型(refrence type),值類型對象均分配在棧中,引用類型的都會(huì)分配在托管堆中。

換句話說就是對象的類型決定了其分配的位置,棧還是托管堆。棧內(nèi)存的回收還是與以往一樣,是確定性的,托管堆內(nèi)存的回收是由垃圾回收器來負(fù)責(zé)。然而在這樣的內(nèi)存模型中,MyClass myClass;這個(gè)語句在C++/CLI中的語義會(huì)是什么呢?

眾所周知,高級(jí)語言得以出現(xiàn),主要?dú)w功于編譯器,語義會(huì)是怎么樣,當(dāng)然也取決于編譯器的編譯結(jié)果。下面通過一些簡單的代碼進(jìn)行講解,請留意代碼中的注釋

  1. private:  
  2. class SingleTonTranslator  
  3. {  
  4. public:  
  5. SingleTonTranslator()  
  6. {  
  7. signal(SignalExceptionClass::GetSignalNumber(),   
  8. SignalHandler);  
  9. }  
  10.  
  11. static void SignalHandler(int)  
  12. {  
  13. throw SignalExceptionClass();  
  14. }  
  15. };  
  16.  
  17. public:  
  18. SignalTranslator()  
  19. {  
  20. static SingleTonTranslator s_objTranslator;  
  21. }  
  22. };  
  23.  
  24. // An example for SIGSEGV  
  25. class SegmentationFault : public ExceptionTracer, public   
  26. exception  
  27. {  
  28. public:  
  29. static int GetSignalNumber() {return SIGSEGV;}  
  30. };  
  31.  
  32. SignalTranslator<SegmentationFault>   
  33. g_objSegmentationFaultTranslator;  
  34.  
  35. // An example for SIGFPE  
  36. class FloatingPointException : public ExceptionTracer, public   
  37. exception  
  38. {  
  39. public:  
  40. static int GetSignalNumber() {return SIGFPE;}  
  41. }; 

但看了無數(shù)篇闡述C++復(fù)雜性的文章,和爭論C++復(fù)雜性的吐沫星子(包括我前段時(shí)間寫的兩篇關(guān)于C++的總結(jié))。我始終都有一個(gè)感覺——沒分析透,就跟盲人摸象一樣。正如“Why C++”的一位讀者批評(píng)的。

在文章里面沒有寫明到底哪些是C++的“非本質(zhì)復(fù)雜性”。當(dāng)然,我自己憑感覺就能知道,而接觸C++一段時(shí)間的人大致也能知道,但新手乃至非新手則對我所謂的“非本質(zhì)復(fù)雜性”根本沒有一個(gè)具體的認(rèn)識(shí),這就使得那篇“Why C++”脫離了原本的意圖——面向所有C++使用者和學(xué)習(xí)者。

同樣的原因,在寫了“你應(yīng)當(dāng)如何學(xué)習(xí)C++/CLI一文之后,當(dāng)孟巖先生邀請我給《程序員》寫一個(gè)系列的文章,介紹一下我在接觸C++的過程中的態(tài)度和認(rèn)識(shí)轉(zhuǎn)變時(shí),我雖然非常高興的答應(yīng)了。

但直到現(xiàn)在3個(gè)月過去了還是顆粒無收。為什么?因?yàn)槲矣X得真正本質(zhì)的問題沒有被清晰的觸摸到;所以直到現(xiàn)在我都沒有動(dòng)筆,免得廢話說了一大堆,除了能被當(dāng)成小說讀讀之外,對真正考慮是否要學(xué)習(xí)乃至使用C++/CLI的人未必有什么實(shí)際用處。

【編輯推薦】

  1. 簡介學(xué)習(xí)C++總結(jié)之談
  2. 對C++庫函數(shù)進(jìn)行學(xué)習(xí)探索總結(jié)筆記
  3. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
  4. C++語言真的還有市場價(jià)值?
  5. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
責(zé)任編輯:chenqingxiang 來源: NET130
相關(guān)推薦

2024-01-18 10:27:30

C++引用函數(shù)

2010-01-25 11:13:18

C++棧對象

2010-02-03 14:30:04

C++棧對象

2011-07-20 15:58:53

C++引用

2016-04-13 11:05:02

C++引用匿名對象

2011-04-07 16:34:05

staticC++

2011-04-19 16:38:00

對象指針指針C++

2010-01-15 18:57:58

C++CLI

2015-05-13 10:37:58

C++指針與引用

2011-03-30 17:20:18

C++引用

2010-01-20 09:48:44

面向?qū)ο?/a>

2014-05-15 16:33:05

C++CLI調(diào)用C#

2010-01-11 15:29:13

引用C++語言

2011-04-13 16:50:54

CC++內(nèi)存

2011-06-21 11:16:24

cc++

2024-01-29 16:55:38

C++引用開發(fā)

2010-01-15 18:06:20

C++引用

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2011-07-14 23:27:05

C++引用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)