속성 (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인지에 따라 작업을 get
put
a 또는 함수로 변환합니다. "+=
"와 같은 더 복잡한 컨텍스트에서 다시 쓰기는 둘 다 get
put
수행하여 수행됩니다.
이 특성은 클래스 또는 구조체 정의에 있는 빈 배열의 선언에서도 사용할 수 있습니다. 예시:
__declspec(property(get=GetX, put=PutX)) int x[];
위의 문은 x[]
를 하나 이상의 배열 인덱스와 함께 사용할 수 있음을 나타냅니다. 이 경우 i=p->x[a][b]
가 i=p->GetX(a, b)
로 바뀌고 p->x[a][b] = i
가 p->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;
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback을 참조하세요.
출시 예정: 2024년 내내 콘텐츠 피드백 메커니즘인 GitHub 문제를 단계적으로 폐지하고 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은다음에 대한 사용자 의견 제출 및 보기