Partilhar via


property (C++)

Específico da Microsoft

Esse atributo pode ser aplicado a “membros de dados virtuais” não estáticos em uma definição de classe ou estrutura. O compilador trata esses “membros de dados virtuais” como membros de dados alterando suas referências em chamadas de função.

__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

Comentários

Quando o compilador consulta um membro de dados declarado com esse atributo à direita de um operador de seleção de membro (“.” ou “->"), a operação converte a uma função get ou put, dependendo se essa expressão for um l-value ou r-value. Nos contextos mais complicados, como “+=”, uma regravação é executada fazendo get e put.

Esse atributo também pode ser usado na declaração de uma matriz vazia em uma definição de classe ou estrutura. Por exemplo:

__declspec(property(get=GetX, put=PutX)) int x[];

A instrução anterior indica que x[] pode ser usado com um ou mais índices da matriz. Nesse caso, i=p->x[a][b] será transformado em i=p->GetX(a, b), e p->x[a][b] = i será transformado em p->PutX(a, b, i);

FIM de Específico da Microsoft

Exemplo

// 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 também

Referência

__declspec

Palavras-chave C++