propiedad (C++)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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.

  
      __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  

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

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

__declspec
Palabras clave de C++

Mostrar: