property (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
备注
当编译器看到数据成员声明将此属性在成员选择运算符 (".”或 “- AMP_GT") 右侧,它会将操作转换为 获取 或 放置 功能,根据此类表达式是否是左值或 r 值。 在较复杂的上下文,例如 “+=”,复盖通过执行 获取 和 放置执行。
此属性还可用于空数组的声明在类或结构定义。 例如:
__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;
}