property (C++)
Specifici di Microsoft
Questo attributo può essere applicato a non static “membri dati virtuali„ nella definizione di classe o struttura.Il compilatore considera tali “membri dati virtuali„ come membri dati modificando i riferimenti nelle chiamate di funzione.
__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
Note
Quando il compilatore rileva un membro dati dichiarato con questo attributo a destra di un operatore di selezione dei membri (".“o„- >"), converte l'operazione a un oggetto ottenere o inserito funzione, come se tale espressione è un l-value o un r-value.In contesti più complessi, ad esempio “+=“, una riscrittura viene eseguito con entrambi ottenere e inserito.
Questo attributo può essere utilizzato nella dichiarazione di una matrice vuota nella definizione di classe o struttura.Di seguito è riportato un esempio:
__declspec(property(get=GetX, put=PutX)) int x[];
L'istruzione sopra indica che x[] può essere utilizzato con uno o più indici di matrice.in questo caso, i=p->x[a][b] si trasformerà in i=p->GetX(a, b)e p->x[a][b] = i si trasformerà in p->PutX(a, b, i);
Microsoft FINALE specifico
Esempio
// 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;
}