https://blog.csdn.net/lixingshi/article/details/41277577

__property是属性关键字,用来定义类的某种属性。

给类定义属性,是BCB的扩展,为了说明属性的本质,先看一个标准C++类是如何获取或设置数据字段的:

  1. class myClass
  2. {
  3. private:
  4. int data;
  5. public:
  6. int GetData() const{ return data; }
  7. void SetData(int aData){ data = aData; }
  8. };

上面例子中,data是私有字段,GetData和SetData分别用于对data的读和写。如果改用BCB来写这个类,一般是这样的:

  1. class myClass
  2. {
  3. private:
  4. int data;
  5. int GetData(){ return data; }
  6. void SetData(int aData){ data = aData; }
  7. public:
  8. __property int Data = {read=GetData, write=SetData};
  9. };

在这里,GetData和SetData分别成了属性Data的读写方法,属性则是对字段data读写方法的封装。可以更方便、直观的对类的数据字段进行操作。

例子中,如果对data的操作没有特殊处理,还可以略去读写方法:
__property int Data = {read=data, write=data};

也可以对不直接是类字段的数据定义属性,如,我们要获取字段data的平方数,可以直接写一个私有的读方法:
int GetSquare(){ return data * data; }
然后定义一个平方数属性:
__property int Square = {read=GetSquare};  // 这里没有定义写方法,因此该属性是只读的。

上面只是__property最基础的用法,__property还可以定义类字段流的存取,这里就不一一解说了。

如有错误,请各位大侠指正。

补充:
上面例子中,属性Data可以视为对类字段的封装;而属性Square则可理解为对函数方法的映射。

转载于:https://www.cnblogs.com/xiangtingshen/p/11158703.html

__property 关键字的使用相关推荐

  1. 关于COM及套间(Apartment)知识

    什么是COM组件? COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成. COM组件是遵循COM规范编写的 COM组件是一些小的二进制可执行文件 COM组件可以 ...

  2. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  3. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  4. volatile关键字之全面深度剖析

    引言 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字 ...

  5. mysql屏蔽关键字实现方法_PHP屏蔽过滤指定关键字的方法

    本文实例讲述了PHP屏蔽过滤指定关键字的方法.分享给大家供大家参考.具体分析如下: 实现思路: 一.把关键字专门写在一个文本文件里,每行一个,数量不限,有多少写多少. 二.PHP读取关键字文本,存入一 ...

  6. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  7. Java this 关键字使用

    this 引用就是本类的一个对象 理解这句话看下面一段代码 package me; public class Me {String name; //成员变量int age;public Me(Stri ...

  8. java 关键字(面试题)

    学而时习之,温故而知新. 今天群里有人问java中true ,false 是关键字吗, 这里记录下,不是关键字,我还特意翻看之前的书看看 下面是 Java 语言保留使用的 50 个关键字: 关键字 g ...

  9. java中标识符,关键字,数据类型

    什么是标识符? 在java语言中用来给一个类,变量或方法命名的符号 标识符的命名规则 标识符可以由字母.数字.下划线(_).美元符($)组成,但不能包含 @.%.空格等其它特殊字符,不能以数字开头. ...

最新文章

  1. linux下的hive命令大全,Hive shell 常用命令
  2. 根据痛点分析制作软件
  3. 遍历 HashMap 的 5 种最佳方式,我不信你全知道!
  4. body区域怎么传一个数组_用户输入的虎狼之词,怎么校验之后不见了?
  5. 3d button - where is OS type and version detected
  6. 伺服电机要计算机控制,计控 - it610.com
  7. html下拉框设置默认值_如何设置HTML select下拉框的默认值?
  8. svn认证失败,解决方案
  9. mysql查询字段数据是否有空格_mysql查询条件字段值末尾有空格也能查到数据问题...
  10. 上下求索——基于双向推理的多跳知识库问答技术
  11. Resharper:还记得NHibernate之夏中那如梦般的代码自动工具吗?
  12. 【vn.py】开发环境搭建
  13. 【论文笔记】使用物理原理和领域知识进行无标注的监督学习
  14. 快速掌握Photoshop简单用法
  15. python导入openpyxl_python系列之(6)Python使用Openpyxl操作Excel
  16. Kubernetes入门一:介绍及环境准备
  17. u3d android 优化
  18. 物品丢失成为人们头痛的问题,苹果Find My帮助我们更好找到物品
  19. selenium实现模拟点击QQ一键登录
  20. 浅谈为什么倒序遍历List删除元素没有问题

热门文章

  1. 转:Deep learning系列(十五)有监督和无监督训练
  2. linux常用命令速记
  3. jQuery和react实现二维码
  4. 【Office Word】论文排版有关技巧
  5. TopFreeTheme精选免费模板【20130703】
  6. 打开指定大小的新窗体
  7. ajax中异步属性,ajax中的async属性值之同步和异步及同步和异步区别
  8. tableau货架图制作_3小时精通Tableau图表制作(18类)
  9. RecordBatch分析
  10. GroupMetadataManager分析