property (C++)
Seção específica 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.
Sintaxe
__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 vê um membro de dados declarado com este atributo à direita de um operador de seleção de membro ("." ou "->"), ele converte a operação em a get
ou put
função, dependendo se tal expressão é um valor l ou um valor de r. 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 da seção específica 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;
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de