property (C++)
Programu Microsoft
Ten atrybut mogą być stosowane do niestatycznego "Członkowie wirtualnego danych" w definicji klasy lub struktury.Kompilator traktuje te "wirtualnego danych członków" jako członkowie 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
Gdy kompilator widzi członka danych, zadeklarowanych z tego atrybutu po prawej stronie operatora wybranych elementów członkowskich ("."lub"->"), są konwertowane na operacji uzyskać lub put funkcji, w zależności od tego, czy takie wyrażenie jest l wartość lub wartość.W bardziej skomplikowane kontekstach, takie jak "+=", przeróbka jest wykonywane zarówno wykonując uzyskać i put.
Atrybut ten może również w deklaracji pustą tablicę w definicji klasy lub struktury.Na przykład:
__declspec(property(get=GetX, put=PutX)) int x[];
Powyższe oświadczenie wskazuje, że x[] może być używany z jednego lub więcej indeksy tablicy.W tym przypadku i=p->x[a][b] zostaną przekształcone w i=p->GetX(a, b), i p->x[a][b] = i zostaną przekształcone wp->PutX(a, b, i);
KONIEC Microsoft szczególne
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;
}