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

C++:最強大的 .NET 語言 — 存取性、屬性與委派完整指南

     編輯:關於C++

CLR 存取性模型

CLR 存取修飾詞超越原生 C++ (public/private/protected),可定義命名空間、巢狀型別的可見度,並針對組件內外分別控制。

  • 命名空間/非巢狀型別:public/private 指定組件外可見度,預設 private。
  • 類別成員:可組合兩個關鍵字,第一個限制組件外,第二個限制組件內。單一關鍵字同時作用內外。
public ref class ReferenceType {
public:           // 組件內外皆可見
private public:   // 僅組件內可見
protected public: // 組件內全可見;組件外僅繼承類別可見
};

屬性:優雅且強大

CLR 型別僅含方法與欄位,屬性為中繼資料標記的方法組合。C# 支援最佳,Managed C++ 需 __property 關鍵字且關聯不明確。C++/CLI 設計簡潔強大:

property String^ Name {
    String^ get() { return m_value; }
    void set(String^ value) { m_value = value; }
}

編譯器自動產生 get_Name/set_Name 及中繼資料。支援非對稱存取性:

property String^ Name {
public:  String^ get();
private public: void set(String^);
}

簡易屬性語法:property String^ Name; 編譯器產生預設實作 (私有支援欄位),未來可替換實作不破壞介面。

委派:型別安全的函式指標

原生 C++ 函式指標受限於特定簽章。CLR 委派類似函式指標但更強大:目標方法屬於任何型別,只要簽章匹配即可綁定;支援多播鏈結。

delegate void Function();

ref struct ReferenceType {
    void InstanceMethod() {}
    static void StaticMethod() {}
};

// 建立委派綁定實例方法
Function^ f = gcnew Function(gcnew ReferenceType, &ReferenceType::InstanceMethod);
// 綁定靜態方法並組合多播
f += gcnew Function(&ReferenceType::StaticMethod);
// 呼叫
f();

結語

C++/CLI 提供空前威力與優雅語法:精細存取性控制、原生屬性支援、型別安全委派,讓開發者在不犧牲簡潔性、編程/執行效率下,完全使用 C++ 編寫豐富 .NET 應用。

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