BCB 中 Application->CreateForm 和 New 的一个区别

来源:互联网 发布:杨幂睡小鲜肉知乎 编辑:程序博客网 时间:2024/06/01 17:55

Application->Create 和 NEW 的一个区别

[摘要:Application-Create 战 NEW 的一个差别 比来写windows办事的时间,碰巧遇到一个题目。我设立建设了一个DataModal,然后正在Datamodal的OnCreate 事情中建立了别的一个类A的工具a。. a会往拜访DataModal的齐局] 

最近写windows服务的时候,恰巧碰到一个问题。我建立了一个DataModal,然后在Datamodal的OnCreate 事件中创建了另外一个类A的对象a。.

a会去访问DataModal的全局指针。相当于下面这个东西:


如果使用Application->CreateForm 创建,则a可以访问到DataModal的全局指针。即,用下面的方式创建:


如果用new的方式创建,DataModal的全局指针,在OnCreate的时候,是NULL


设计Form2的FormCreate函数如下:

点评:这是类构造问题,CreateForm函数常用在函数入口加载界面,函数第二个参数传入引用,马上引用该地址到创建的对象上;而new对象赋值方法,先创建一个零时的对象,再把地址赋值给指针对象。此外BCB的构造同时会调用窗体的FormCreate函数,关于formcreate和构造函数的顺序可总结为,当OldCreateOrder=false时先执行构造函数内容,退出构造时执行formcreate;当OldCreateOrder=true是先调用formcreate后执行构造函数中的内容。

0 0
原创粉丝点击