共用方式為


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

備註

當編譯器查看成員選取運算子 (「.」或「->」) 右側以此屬性宣告的資料成員時,會視此類運算式為左值或右值來決定將作業轉換成 getput 函式。 在更複雜的內容 (例如「+=」) 中,同時執行 getput 即可重寫。

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

__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

C++ 關鍵字