propiedad (C++)
Específicos de Microsoft
Este atributo se puede aplicar a los "miembros de datos virtuales" no estáticos en una definición de clase o estructura. El compilador trata a estos "miembros de datos virtuales" como miembros de datos y cambia sus referencias en las llamadas de función.
Sintaxis
__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
Comentarios
Cuando el compilador consulta un miembro de datos declarado con este atributo en el lado derecho de un operador de selección de miembros ("." o "->"), convierte la operación a una función get
o put
, en función de que la expresión sea un valor L o un valor R. En contextos más complicados, como "+=
", se realiza una reescritura y se usan ambos, get
y put
.
Este atributo se puede utilizar también en la declaración de una matriz vacía en una definición de clase o estructura. Por ejemplo:
__declspec(property(get=GetX, put=PutX)) int x[];
La instrucción anterior indica que x[]
se puede utilizar con uno o más índices de matriz. En este caso, i=p->x[a][b]
se convertirá en i=p->GetX(a, b)
y p->x[a][b] = i
se convertirá en p->PutX(a, b, i);
FIN de Específicos de Microsoft
Ejemplo
// 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;
}
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de