C++中^符號的意思

來源:互聯網
上載者:User

光用C#還不夠,很多時候,還是很需要C++於是回頭來看C++的資料,發現^居然沒看過。

 

比如,在這裡可以看到其用法:

http://msdn.microsoft.com/zh-cn/library/y52yxde8(VS.80).aspx

 

找到關於^的一點解釋如下:

 

託管擴充的一個最大的問題是對指標的使用。指標被用於各種各樣的任務,而其情況也是複雜多變的,因而非常難以理解。在某一特定的程式碼片段中要解讀自己在和哪一種指標打交道需要有一定程度的天賦。這種複雜性在下一個版本中會被去掉。在Visual C++ 2005中,指標還是原原本本的C++指標。它們指向穩定的對象,而您則可以用指標進行算術操作。指向對象的指標的生命週期必須由開發人員顯式管理。當使用指標時,運行庫不會負責對指標帶來的垃圾進行清理。

 

現在讓我們看一下Visual C++ 2005的設計人員是如何解決這一問題的。與Visual Studio .NET 2003和Visual Studio 2005中使用new運算子返回指標不同,gcnew運算子返回一個“控制代碼”這是一種新構造,在文法中用“^”符號來表示。該控制代碼引用託管堆中的整個對象。也就是說,它們不能用來指向類型的內部,而編譯器對它們的使用有許多限制,以此來強制執行這種行為,而這也可以協助開發人員正確並安全地使用控制代碼。控制代碼不允許進行指標算術運算,也不可以被強制轉換為空白指標或是任何整數類型。然而,星號和箭頭運算子仍被用來取消對它的引用。

 

這並不意味著您不能再獲得一個指向記憶體回收堆上的指標。與在C#中組合&運算子與固定的關鍵字相似,在Visual C++ 2005中,pin_ptr抽象類別型允許您檢索指向託管堆上對象的釘住指標。只要這個指標存在,託管堆中的對象就會被釘住,這可以防止記憶體回收行程在回收的過程中移動它。Visual C++ 2005還引入了跟蹤引用運算子,用百分比符號(%)來表示。當在C++中引入原生&引用運算子時,大多數開發人員都知道可以把它理解成一個指向對象的指標,在使用時是由編譯器來自動清除的。在大多數情況下,%對^而言就像&對*一樣。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.