property (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 cambiando sus referencias en llamadas de función.

__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 a un miembro de datos declarado con este atributo en el lado derecho de un operador miembro-selección (“.” o “- >"), convierte la operación a una función de obtenga o de coloque , dependiendo de si una expresión es un valor l o un r-value.En contextos más complicados, como “+=”, una reescritura se realiza haciendo obtenga y coloque.

Este atributo se puede utilizar 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 gira en i=p->GetX(a, b), y p->x[a][b] = i se gira en p->PutX(a, b, i);

Específico de Microsoft de FINAL

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

Vea también

Referencia

__declspec

Palabras clave de C++