właściwość (C++)
Specyficzne dla firmy Microsoft
Ten atrybut może być stosowany do niestatycznych "wirtualnych elementów członkowskich danych" w definicji klasy lub struktury.Kompilator traktuje te "wirtualnych elementy członkowskie danych" jako elementy danych, zmieniając ich odwołania do wywołania funkcji.
__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
Uwagi
Kiedy kompilator zauważa element członkowski danych zadeklarowany z atrybutem po prawej stronie operatora wyboru elementów członkowskich ("." lub "->"), konwertuje operację do funkcji get lub put, w zależności od tego, czy takie wyrażenie jest l-wartości, czy też r-wartości.W bardziej skomplikowanych kontekstach, takich jak "+=", przepisanie odbywa się wykonując obie funkcje get i put.
Atrybut ten można również użyć w deklaracji pustej tablicy w definicji klasy lub struktury.Na przykład:
__declspec(property(get=GetX, put=PutX)) int x[];
Powyższa instrukcja wskazuje, że x[] może być używane z jednym lub z kilkoma indeksami tablicy.W tym przypadku i=p->x[a][b] zostanie przekształcone do i=p->GetX(a, b), i p->x[a][b] = i zmieni się w p->PutX(a, b, i);
KONIEC informacji specyficznych dla firmy Microsoft
Przykład
// 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;
}