自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

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

  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. }; 

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

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

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

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

【編輯推薦】

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

2010-01-25 11:13:18

C++棧對(duì)象

2024-01-18 10:27:30

C++引用函數(shù)

2010-02-03 14:30:04

C++棧對(duì)象

2011-07-20 15:58:53

C++引用

2016-04-13 11:05:02

C++引用匿名對(duì)象

2011-04-07 16:34:05

staticC++

2011-04-19 16:38:00

對(duì)象指針指針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++語(yǔ)言

2011-04-13 16:50:54

CC++內(nèi)存

2011-06-21 11:16:24

cc++

2010-01-15 18:06:20

C++引用

2024-01-29 16:55:38

C++引用開(kāi)發(fā)

2023-11-29 09:47:11

C++對(duì)象

2012-02-13 10:18:42

C++ 11

2010-01-22 16:35:41

C++開(kāi)發(fā)
點(diǎn)贊
收藏

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