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

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

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

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

上面例子中,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.  
     
  8.  
    public:
  9.  
    __property int Data = {read=GetData, write=SetData};
  10.  
    };

在这里,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则可理解为对函数方法的映射。

__property 关键字的使用的更多相关文章

  1. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

  2. C++关键字(保留字)

    C++ 关键字 点击下表以进入具体释义 __abstract 2 __alignof Operator __asm __assume __based __box 2 __cdecl __declspe ...

  3. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  4. java面向对象中的关键字

    1,super关键字 super:父类的意思 1. super.属性名 (调用父类的属性) 2. super.方法名 (调用父类的方法) 3. super([参数列表])(调用父类的构造方法) 注意: ...

  5. 关于javascript中的this关键字

    this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...

  6. transient关键字的用法

    本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...

  7. Java关键字:static

    通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...

  8. Core Java 总结(关键字,特性问题)

    2016-10-19 说说&和&&的区别 初级问题,但是还是加入了笔记,因为得满分不容易. &和&&都可以用作逻辑与的运算(两边是boolean类型), ...

  9. Net中的常见的关键字

    Net中的关键字有很多,我们最常见的就有new.base.this.using.class.struct.abstract.interface.is.as等等.有很多的,在这里就介绍大家常见的,并且有 ...

随机推荐

  1. Disruptor分布式id生成策略

    需要的pom文件: <!-- 顺序UUID --> <dependency> <groupId>com.fasterxml.uuid</groupId> ...

  2. 缺陷的背后(四)---多进程之for循环下fork子进程引发bug

    导语 业务模块为实现高并发时的更快的处理速度,经常会采用多进程的方式去处理业务.多进程模式下常见的三种bug:for循环下fork子进程导致产生无数孙子进程,僵尸进程,接口窜包.本章主要介绍第一种常见 ...

  3. Replace到达地

    string getcstr(string cs)        {            String SplitKey = @"乌孜别克族,柯尔克孜族,维吾尔族, 鄂伦春族, 哈萨克族, ...

  4. OO第4次博客作业

    OO第4次博客作业 一.第4单元设计 第四单元主要围绕UML图的结构进行JAVA代码编写,对JAVA的层次结构进行更多的认识.个人认为编程操作在实质上与上一章的PathContainer有许多的相同之 ...

  5. iOS pushViewController 和 presentViewController的区别 详解

    pushViewController 导航控制器入栈的方式切换页面presentViewController 模态切换的方式切换页面 1:用 UINavigationController 的时候用 p ...

  6. Git和GitHub在线学习资源整理

    电子书 GotGitHub Git Workflow 沉浸式学习Git 文章 GitHub Fundamental visual-git-guide 图形化的Git参考手册 Linux下使用git命令 ...

  7. Sqlite常用命令及基本知识

      sqlite菜鸟教程:http://www.runoob.com/sqlite/sqlite-tutorial.html   常用命令: .sqlite3 --从dos命令模式进入sqlite命令 ...

  8. 微信小程序 时间戳 转化为 日期格式

    util.js  : function transTime(unixtime) { var dateTime = new Date(parseInt(unixtime) * 1000) var yea ...

  9. 数据库PDO简介

    php简介,php历史,php后端工程师职业前景,php技术方向,php后端工程师职业体系介绍. php是世界上使用最广泛的web开发语言,是超文本预处理器,是一种通用的开源脚本语言,语法吸收了c语言 ...

  10. PHP openssl DES加解密

    不说废话上代码 加密 $str_padded = 'android'; //要加密的字符串 $iv = "12345678"; 偏移值 cbc必填 "\x01\x02\x ...