共用方式為


類別和結構 (C++ 元件擴充功能)

宣告自動管理「物件存留期」(Object Lifetime) 的類別或結構。當物件不再是可存取或超出範圍時,Visual C++ 會自動捨棄配置給物件的記憶體。

所有執行階段

語法

class_access ref class    name modifier :  inherit_access base_type {};
class_access ref struct   name modifier :  inherit_access base_type {};
class_access value class  name modifier :  inherit_access base_type {};
class_access value struct name modifier :  inherit_access base_type {};

參數

  • class_access (選擇性)
    組件外部類別或結構的存取範圍。可能的值為 public 和 private (private 是預設值)。巢狀類別或結構不可以有 class_access 規範。

  • name
    類別或結構的名稱。

  • 修飾詞 (選擇性)
    abstractsealed 是有效的修飾詞。

  • inherit_access (選擇性)
    base_type 的存取範圍。唯一允許的存取範圍是 public (public 是預設值)。

  • base_type (選擇性)
    基底型別。不過,實值型別不可以當做基底型別。

    如需詳細資訊,請參閱 Windows 執行階段 和 Common Language Runtime 兩節中有關這個參數的語言特定描述。

備註

使用 ref classvalue class 所宣告的物件,其預設成員存取範圍會是 private。使用 ref structvalue struct 所宣告的物件,其預設成員存取範圍會是 public。

當參考型別自另一個參考型別繼承時,必須明確覆寫 (使用 override (C++ 元件擴充功能)) 或隱藏 (使用 new (vtable 中的新位置) (C++ 元件擴充功能)) 基底類別中的虛擬函式。衍生類別函式也必須明確標記為 virtual。

若要在編譯時期偵測型別是 ref class 還是 ref struct,或者是 value class 還是 value struct,請使用 __is_ref_class (type)、__is_value_class (type) 或 __is_simple_value_class (type)。如需詳細資訊,請參閱型別特性的編譯器支援 (C++ 元件擴充功能)

如需類別和結構的詳細資訊,請參閱

Windows 執行階段

備註

請參閱 Ref 類別與結構實值類別與結構

參數

  • base_type (選擇性)
    基底型別。ref class 或 ref struct 可以繼承自零個或多個介面以及零個或一個 ref 型別。value class 或 value struct 只能繼承自零個或多個介面。

    當您使用 ref class 或 ref struct 關鍵字宣告物件時,物件的存取是透過物件控制碼,也就是物件的參考計數指標。當宣告的變數超出範圍時,編譯器會自動刪除基礎物件。當物件是在呼叫中做為參數,或在變數中儲存時,實際上傳遞或儲存的是物件的控制代碼。

    當您使用 value class 或 value struct 關鍵字宣告物件時,所宣告之物件的存留期不會受到監督。物件類似任何其他標準 C++ 類別或結構。

6w96b5h7.collapse_all(zh-tw,VS.110).gif需求

編譯器選項:/ZW

Common Language Runtime

備註

下表列出與 [所有執行階段] 區段中所顯示專屬於 C++/CLI 之語法的差異。

參數

  • base_type (選擇性)
    基底型別。ref class 或 ref struct 可以繼承自零個或多個 Managed 介面以及零個或一個 ref 型別。value class 或 value struct 只能繼承自零個或多個 Managed 介面。

    ref class 和 ref struct 關鍵字會指示編譯器將類別或結構配置在堆積上。當物件是在呼叫中做為參數,或在變數中儲存時,實際上傳遞或儲存的是物件的參考。

    value class 和 value struct 關鍵字會告訴編譯器,所配置之類別或結構的值已傳遞給函式或儲存在成員中。

6w96b5h7.collapse_all(zh-tw,VS.110).gif需求

編譯器選項:/clr

請參閱

概念

執行階段平台的元件擴充功能