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;
}