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,这是编译器指示方法参数通过寄存器传输,而不是通过堆栈。这是所有窗体所必需的。然而,如果加入自定义的防范也需要遵循这一要求。