共用方式為


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

備註

當編譯程式在成員選取運算符 (“.” 或 “->” ) 右邊看到以此屬性宣告的數據成員時,它會根據這類表達式是 l 值或 r 值而定,將作業get轉換成 或 put 函式。 在更複雜的內容中,例如 “+=”,會執行 和 get來執行put重寫。

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

__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);

END 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
關鍵字