共用方式為


property (C++)

Microsoft 專有的

這個屬性可以套用至非靜態 「 虛擬資料成員 」,在類別或結構的定義。 編譯器會將資料成員為這些 「 虛擬資料成員 」,藉由變更它們的參考至函式呼叫。

__declspec( property( get=get_func_name ) ) declarator
__declspec( property( put=put_func_name ) ) declarator
__declspec( property( get=get_func_name, put=put_func_name ) ) declarator

備註

當編譯器所看見的宣告以這個屬性在 [成員選取運算子右邊的資料成員 ("."->"),它會將轉換作業 取得函式,根據這類運算式是左值或 r-value。 在多個複雜內容,例如"+=",重寫都由執行這兩取得

這個屬性也可用的類別或結構定義中的空白陣列宣告中。 例如:

__declspec(property(get=GetX, put=PutX)) int x[];

上面的陳述式表示x[]可與一個或多個陣列索引。 如此一來, i=p->x[a][b]會轉換成i=p->GetX(a, b),以及p->x[a][b] = i會轉換成p->PutX(a, b, i);

結束 Microsoft 特定

範例

// declspec_property.cpp
struct S {
   int i;
   void putprop(int j) { 
      i = j;
   }

   int getprop() {
      return i;
   }

   __declspec(property(get = getprop, put = putprop)) int the_prop;
};

int main() {
   S s;
   s.the_prop = 5;
   return s.the_prop;
}

請參閱

參考

__declspec

C + + 關鍵字