• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi自定义类中的“构造函数”与“析构函数”

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.重载构造函数overload关键字
eg:
    constructor Create(Name:string;Sex:string;Year:integer;Tall:integer;Weight:integer);overload;
    constructor Create(Name:string;Sex:string);overload;   

    ps: 重载构造函数,注意一定要使用关键字:overload

 


2.自定义类中是否需要显式定义构造函数:
    所有类默认继承自TObject,即使没有声明class(TObject),Create实际是通知编译器为其分配一块堆内存.

在自定义类中,即使没有显式的定义构造函数,程序默认调用的是TObject的构造函数.



3.TObject.Free的真正作用:实际上只是为"堆内存块"解锁,使得其他程序可以使用该块堆内存,而引用并没有被

     重置为nil,因此,经常Free之后,仍可以正确访问到对象的成员变量(解锁后,该块内存没有被其他程序使用)

 


4.自定义的类,什么时候需要专门定义析构函数?
     自定义的类中,含有类成员.由于Free操作只是对当前对象的"堆内存块"进行了解锁,而类成员指向的另一块

"堆内存块" 并没有被解锁,如果不在析构函数中对其解锁,则会造成内存泄漏.

 


5.不需要程序员显示调用Free的自定义类?
     对于从Tcomponent继承下来的对象,在Create的时候可以指定一个所有者。如果一个对象在创建时指

定了所有者,那么该对象的生存期将由所有者进行管理。所有者在析构时,会同时析构它所拥有的全部对象。

 


6.自定义类中,如何定义析构函数?
     Delphi中所有类都继承自TObject ,Create默认不是虚方法 ,Destroy默认是虚方法.被覆盖的函数必须是

虚(virtual)的,或者是动态(dynamic)的,因此自定义类的Destroy方法可以被覆盖.
     而VCL中组件继承的大多Create都被声明成虚方法了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi ADOConnection连接 sqlserver发布时间:2022-07-18
下一篇:
Delphi的字符及字符串[4]-字符串、字符指针与字符数组发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap