속성 (C++)

Microsoft 전용

이 특성은 클래스 또는 구조체 정의에서 비정적 "가상 데이터 멤버"에 적용할 수 있습니다. 컴파일러는 해당 참조를 함수 호출로 변경하여 이러한 "가상 데이터 멤버"를 데이터 멤버로 처리합니다.

구문

   __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

설명

컴파일러에서 멤버 선택 연산자("." 또는 "->")의 오른쪽에 이 특성으로 선언된 데이터 멤버를 볼 때 해당 식이 l-value인지 r-value인지에 따라 작업을 getput a 또는 함수로 변환합니다. "+="와 같은 더 복잡한 컨텍스트에서 다시 쓰기는 둘 다 getput수행하여 수행됩니다.

이 특성은 클래스 또는 구조체 정의에 있는 빈 배열의 선언에서도 사용할 수 있습니다. 예시:

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

위의 문은 x[]를 하나 이상의 배열 인덱스와 함께 사용할 수 있음을 나타냅니다. 이 경우 i=p->x[a][b]i=p->GetX(a, b)로 바뀌고 p->x[a][b] = ip->PutX(a, b, i);로 바뀝니다.

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
키워드