Delphi高手突破学习笔记
1、关于内存分配
 Delphi内容分配两种方式:堆、栈
 普通变量,record等类型都是栈方式,自动分配内存,即值传递;
 Class类型的都是堆方式,手动控制分配内存,需要create,free的,即引用传递;
理解:所以record的属性不能定义成string格式,只能string[长度],因为record自动分配内存。
2、关于class的创建
 TClass.Create是用于初始化对象,不用于分配内存,一个类的内存是由编译器分配和释放的的。构造函数只用于初始化类属性,析构函数用于释放对象申请的资源及销毁内部的子对象。
 析构函数都要加Override声明。
3、类对象的大小只取决于数据成员,成员函数不占用空间。
4、编译器的字节对齐优化:编译器将无法合并的小于32位空间的数据域填充为32位,以提高存取速度。(两个16位的会被合并成32位)
5、对象方法,类方法;
 对象方法:一般的类里的成员函数,改变对象的状态;
 类方法:改变类的状态,类方法是不能访问对象的数据成员的。
 类之类的类型:类引用。
 TMyClassClass = class of TMyClass 类之类,可以直接调用类的类方法。其操作结果可以对应所有的该类对象。
 类的构造函数是类方法,析构函数是普通的方法。
 类方法和类引用的作用:(29页) 
 原话:用于类型参数化上,有时编译时无法得知某个对象的具体类型,需要调用其类方法(如构造函数),此时可以将类型作为参数来传递。
 理解:
 注意:在类方法中的self指的是类本身,而不是对象。所以类方法中只能调用类方法,不能调用普通方法和数据成员。
6、类级和单元级的封装
 封装的目的在于简化用户接口,隐藏实现细节,难点在于接口的设计。
 类级的封装:最常见的。private,public.protected,published;published和public差不多,但published可以被Object Inspector显示,通常声明属性和事件。private只能被本身和友元访问,protected和private差不多,但它可以被派生类访问。
 其中public和published实现外部细节,private和protected实现内部细节。
 对于派生类来说,public,published,protected都是接口,外部细节,只有private部分为内部细节。
 单元级别的封装:
 a:在一个单元声明的多个类互为友元类;
 b:interface中声明的变量为全局的,其他Unit可见;
 c:implemention声明的变量为Unit局部的;
 d:每个单元有initialization和finalization(可以写初始化函数和释放函数,在initialization和  finalization里调用);
 友元类之间可以相互访问所有数据(public,private,protected,published)。
 

Posted on 2004-03-31 15:47  清澜  阅读(217)  评论(0)    收藏  举报