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

请参见

参考

__declspec

C++关键字