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 ...
随机推荐
- c++非STL全排列
#include <cstdio> #include <vector> #include <string> #include <iostream> #i ...
- 系统引导器GRUB
系统引导器GRUB 理解/boot/grub/grub.conf 1 # grub.conf generated by anaconda 2 # 3 # Note that you do not ha ...
- 利用wireshark任意获取qq好友IP实施精准定位
没事玩一把,感觉还挺有趣,首先打开wireshark: 不管你连接的什么网,如图我连接的是WLAN,双击进入如图界面: ctrl-f进行搜索:如图 选择分组详情,字符串,并输入020048.这时候你就 ...
- CurrentCulture和CurrentUICulture的区别
CurrentCulture 这个属性用来表示和改变使用者要使用的“地区属性”,地区属性改变后,数字.日期时间等表示格式也随之改变. 注意:一定是“地区属性”,如"zh-cn".& ...
- setAttribute设置无效
我发现ie浏览器中动态用setAttribute设置style属性值始终不能设置,经过一番查找发现了这篇文字 http://webcenter.hit.edu.cn/articles/2009/05- ...
- Project 6:上楼梯问题
问题简述:梯有N阶,上楼可以一步上一阶,也可以一步上二阶.编写一个程序,计算共有多少中不同的走法. 样例输入: 5 样例输出: 8 #include <stdio.h> int count ...
- sublime text3 3143 注册码
sublime text3 3143 注册码,可用~ Sublime Text一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制.相比于难于上手的Vi ...
- CloseableHttpClient 源码
public abstract class CloseableHttpClient implements HttpClient, Closeable { private final Log log = ...
- !JS实战之随机像素图
JavaScript实例分享之----画随机像素图.随机像素图(作者自己取得名字)指的是一张图片上每一个像素的颜色都是随机的.此时应该能联想到这幅图多么眼花缭乱,好吧,我们用JS来实现它的原因是JS很 ...
- wineshark分析抓取本地回环包
wineshark分析抓取本地回环包 摘要 由于windows系统没有提供本地回环网络的接口,用Wireshark监控网络的话看不到localhost的流量.想要获取本地的网络数据包,可以通过一款小巧 ...