Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Блок, относящийся только к системам Майкрософт
Этот атрибут может применяться к нестатическим "виртуальным данным-членам" в определении класса или структуры. Компилятор обрабатывает эти "виртуальные данные-члены" как данные-член, заменяя ссылки вызовами функций.
Синтаксис
__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
Замечания
Когда компилятор видит элемент данных, объявленный с этим атрибутом справа от оператора выбора элементов ("" или "->"), он преобразует операцию get
в или put
функцию в зависимости от того, является ли такое выражение l-value или r-value. В более сложных контекстах, таких как "+=
", выполняется перезапись, выполняя оба 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);
Завершение блока, относящегося только к системам Майкрософт
Пример
// 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;
}