首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++/CLI 解析:堆疊語意物件與追蹤參考 (%)

     編輯:VC 教學

堆疊語意參考型別實例

C++/CLI 允許直接在堆疊上宣告參考型別 (ref class) 變數:

Point p1, p2(3,4); // p1 由預設建構函數初始化,p2 由帶參數建構函數初始化

雖語法像值類別,但 Point 為 ref class,實際仍受 CLI 執行階段管理 (GC 可能移動、最終回收)。不能 宣告靜態/全域參考型別實例。不能 對其使用 sizeof (大小僅運行時確定),但可對控制碼 (Point^) 用 sizeof。不能 建立堆疊語意的 CLI 陣列。

追蹤參考 (Tracking Reference) %

原生 C++ 用 & 宣告別名 (參考);但參考型別實例在 GC 壓縮堆積時會移動,原生指標/參考無法追蹤。C++/CLI 提供 % (追蹤參考) 專門綁定參考型別變數:

Point^ p1 = gcnew Point(1,2);
Point^% p2 = p1; // p2 追蹤 p1 變數本身 (而非物件)
// 相當於 C#: ref Point p2 = p1; (但 C# 無此語法,只能用 ref/out 參數)

用途:

  • 函數參數需修改呼叫端的參考型別變數 (交換兩個 handle):void Swap(Point^% a, Point^% b)。
  • foreach 迴圈中需修改集合元素的 handle (罕見)。

% 必須初始化,且終身綁定同一變數,語意類似原生 & 但支援 GC 移動。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved