c++builder中 扩展c++的关键字 : _published _automated Get/Set指令 _fastcall
C++Builder为C++增加了许多关键字,以适应其快速应用开发(RAD)环境。包括关键字和Get/Set指令。
1、_published类似publich权限范围,_published像public一样,运行期间和设计期间都是可用的。这也是为什么C++Builder对象查看器中可以设置属性的原因。
C++Builder窗体中加入的组件都会自动加上_published关键字。新建一个工程,窗体上加入组件,然后切换到代码窗口Unit1.cpp中选择快捷菜单中的Open Soruce/Header file 命令,切换到Unit1-h文件中,我们可以看到如下所示的类的声明:
class TForm1:public TForm
{
_published:
TButton * Button1;
TLabel * Label1;
TEdit * Edit1;
private:
public:
_fastcall TForm1(TcompcNfent * Owner);
}
可以看出,在窗体中加入的组件都在_published段中声明。
如果需要向一个窗体加入成员变量或方法,那么应该加在privatge 或者public 段中,而不应该加在_published中。
一般轻快下,不能手工修改窗体类的_published段,所有带声明的组件都会对应于窗体的DFM文件,因此手工修改可能造成两个文件的不匹配。
_automated关键字和public或者_published的权限相同,不同之处是,_automated用于创建类的OLE(object linking and embedding对象连接和嵌入)信息。通常用于创建Automated Servers。当在C++Builder中创建OLE Automated Servers时,编译器会为成员函数及属性产生OLE Automated信息,并声明在_automated段。
2、Get/Set指令
除了数据成员和方法之外,C++Builder中的类还可以包含属性。通过在对象查看器中设置属性值了解属性的含义,其实它还有更为广泛的用途。
属性与类成员,特别是私有成员有着密切的联系。属性提供了一种信息隐藏的机制。属性是通过Get/Set指令来实现的。要每个私有类成员,可以编写一个指令去获取(Get)值,另一个指令去设置(Set)值,这就是所谓的Get/Set指令。因为并没有直接类的私有部分,所以这种方法能提供良好的信息掩蔽,而且以后还能随意改变内部的数据形式。可以像一个简单变量一样来属性。
3、_fastcall关键字
c++Builder的窗体方法中自动产生_fastcall,这是编译器指示方法参数通过寄存器传输,而不是通过堆栈。这是所有窗体所必需的。然而,如果加入自定义的防范也需要遵循这一要求。
c++builder中 扩展c++的关键字 : _published _automated Get/Set指令 _fastcall的更多相关文章
- Swift基础--Swift中的分类以及在分类中扩展init方法的注意事项
Swift中的分类 1.创建一个空的swift文件 2.关键字extension,格式: extension 要扩展的类名 {} extension UIButton { } Swift中扩展init ...
- 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测
如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...
- 找出此产品描述中包含N个关键字的长度最短的子串
阿里巴巴笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号:再给定N个英文关键词,请说明思路并变成实现方法. String extractSummary(Stri ...
- IE11的变化 navigator.userAgent中不再包含“MSIE”关键字
IE升级了,让人好头疼,升级个东西,我们也要跟着升级,程序猿压力大呀.... 1.navigator.userAgent中不再包含“MSIE”关键字 2.用javascript的判断是否是IE11的方 ...
- ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法
ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法 (2016-10-21 16:49:53) 今天在做一个查询的时候,报了一个"ORA-01652无法通过 ...
- ora-01652无法通过128(在表空间temp中)扩展temp段
今天提交请求后,提示ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段.最后通过ALTER DATABASE TEMPFILE '/*/*/db/apps_st/d ...
- [转载]C#中as和is关键字的用法
这篇文章主要介绍了C#中as和is关键字的用法的相关资料,需要的朋友可以参考下. 原文链接:http://www.jb51.net/article/80944.htm#comments 在程序中,进 ...
- FP 某段SQL语句执行时间超过1个小时,并报错:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展
一.出现如下两个错误:1.某一段SQL语句执行时间超过1个小时:2.一个小时后,提示如下错误:ORA-01652: 无法通过 128 (在表空间 TEMPSTG 中) 扩展 temp 段ORA-065 ...
- Java中的两个关键字——super、this
Java中的两个关键字——super.this 神话丿小王子的博客主页 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 sup ...
随机推荐
- 420小时学习代码之后:如何教你免费自学Python
原文地址:learning-to-code-420-hours-later-how-to-teach-yourself-python-for-free 说明:有些网址需要FQ. 大约在1.5年前,我开 ...
- 创建springbootdemo后运行报MongoSocketOpenException错误解决方法
在类SpringbootdemoApplication上右键Run as选择Spring Boot App后Console输出报错日志如下: com.mongodb.MongoSocketOpenEx ...
- PS软件操作应用—文字特效
前 言 JRedu 在图像调整和文字工具的分享文章中,对文字工具做了简单的介绍,包括了文字的字体.字号大小.颜色以及字间距行距等等的设置和修改,都是一些基本的功能,在这次的分享中我们介绍下文字特 ...
- ORACLE分区表、分区索引详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...
- JUnit 3.8.1 源码学习
JUnit 3.8.1 源码学习 环境搭建(源码加载配置) 由于IDE自身含有JUint插件,因此通过正常途径是没有源码加载入口的,因此需通过手动加载扩展JAR,然后再添加对应源码JAR,如图:项目右 ...
- 客户端与服务端,java与Android跨平台服务
- 获取windows任务栏高度的方法
方法一: TRect rt; SystemParametersInfo(SPI_GETWORKAREA, , &rt, ); //任务栏在下面的高度 int y = ::GetSystemMe ...
- JavaScript 的使用基础总结①
JavaScript 使用 JavaScript 是一种轻量级的编程语言,JavaScript 是可插入 HTML 页面的编程代码,JavaScript 插入 HTML 页面后,可由所有的现代浏览 ...
- 【集美大学1411_助教博客】团队作业1——团队展示&选题 成绩
第一次团队作业已经新鲜出炉啦,各位同学请查收.截止日期前,全班都按时提交了作业,而且有的团队还提交了两次呢,下次不要这样啦~ 题目 团队作业1--团队展示&选题 回顾 个人作业1--四则运算题 ...
- Beta版本测试报告以及Beta版本发布说明
Beta版本测试报告 请根据团队项目中软件的需求文档.功能说明.系统设计和Beta阶段的计划安排,写出软件的测试过程和测试结果,并回答下述问题. 在测试过程中总共发现了多少bug?每个类别的bug分别 ...