właściwość (C++)

Specyficzne dla firmy Microsoft

Ten atrybut można zastosować do niestacyjnych "wirtualnych składowych danych" w definicji klasy lub struktury. Kompilator traktuje te "wirtualne elementy członkowskie danych" jako elementy członkowskie danych, zmieniając odwołania do wywołań funkcji.

Składnia

   __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

Uwagi

Gdy kompilator widzi element członkowski danych zadeklarowany za pomocą tego atrybutu po prawej stronie operatora wyboru elementu członkowskiego ("." lub "->"), konwertuje operację na get funkcję lub put w zależności od tego, czy takie wyrażenie jest wartością l, czy wartością r. W bardziej skomplikowanych kontekstach, takich jak "+=", ponowne zapisywanie jest wykonywane przez wykonywanie zarówno polecenia get , jak i put.

Ten atrybut może być również używany w deklaracji pustej tablicy w definicji klasy lub struktury. Przykład:

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

Powyższa instrukcja wskazuje, że x[] może być używany z co najmniej jednym indeksem tablicy. W tym przypadku i=p->x[a][b] zostanie przekształcony w i=p->GetX(a, b), a p->x[a][b] = i zostanie przekształcony w p->PutX(a, b, i);

END Microsoft Specific

Przykład

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

Zobacz też

__declspec
Słowa kluczowe