Delphi的学习笔记十一——类4
2012-12-31 09:49
344 查看
1.类的方法参数可以分为四种(默认参数(传值)、var(传址)、out(输出)、const(常数))。这里需要注意的是var定义的参数,例如:
Inc(x):表示对x的内存地址加1,这将导致方法返回的值的变化。
对于out(输出),其用法和var一致,所以在一般情况下我们采用var来定义而不是out;对于const,则表示该定义的变量为常量,常量的值无法改变。
2.implementation区/interface区的方法
对于implementation区中的方法,只能在本单元中调用。这里就不举例子了,在之前的举例中都有涉及。
对于interface区中的方法,可以被其它单元调用。
3.在类中的方法
如果一个方法被声明在一个类中,那么调用该方法前就必须先对该类进行初始化。这与其他语言对于类中方法的调用是一致的;并且在实现该方法时,必须在方法名前加上类的前缀,例如:
4.调用其他单元的函数
在调用其他单元的函数时,被调用单元的函数必须在interface区中声明,并在implementation区中也实现。在调用时,我们需要对其单元进行引用,例如:
5.方法的提前声明
如果前面的方法需要调用后面的方法,则需要在被调用的方法中声明forward指示字。例如:
但如果该方法已在interface区中提前声明了,那么就无需在对方法添加forward指示字了。
6.静态数组做参数
对于静态数组做参数,我们需要在Type区把数组定义成一个类型,在对该类型定义一个变量,最后在使用该变量。例如:
而对于开放数组参数,则可以将其直接作为参数来使用,不需要在Type区将其定义为一个类型。例如:
对于遍历开放数组也需要注意,因不知其长度,所以在遍历时需要用到Low()和High()方法,例如:
7.指针参数
在方法中传递指针,我们需要用指针类型来定义。具体实现如下:
在调用该函数时,需要用@来获取变量的地址,例如:
9.方法重载
方法的重载只要用在方法重名但参数不一样的情况,在方法后面必须声明overload指示字。在调用时根据参数来决定调用哪个方法。这与其他语言的重载相似。在published区中的方法命名要有唯一性,该区域方法不能被重载。
{var参数是传址, 会被改变} function MyF2(var x: Integer): Integer; begin Inc(x); Result := x; end;
Inc(x):表示对x的内存地址加1,这将导致方法返回的值的变化。
对于out(输出),其用法和var一致,所以在一般情况下我们采用var来定义而不是out;对于const,则表示该定义的变量为常量,常量的值无法改变。
2.implementation区/interface区的方法
对于implementation区中的方法,只能在本单元中调用。这里就不举例子了,在之前的举例中都有涉及。
对于interface区中的方法,可以被其它单元调用。
3.在类中的方法
如果一个方法被声明在一个类中,那么调用该方法前就必须先对该类进行初始化。这与其他语言对于类中方法的调用是一致的;并且在实现该方法时,必须在方法名前加上类的前缀,例如:
{函数在实现区必须有 TForm1. 作为前缀} function TForm1.MyFun(x,y: Integer): Integer; begin Result := x + y; end;
4.调用其他单元的函数
在调用其他单元的函数时,被调用单元的函数必须在interface区中声明,并在implementation区中也实现。在调用时,我们需要对其单元进行引用,例如:
implementation {$R *.dfm} uses Unit2; {必须 uses 定义函数的单元} procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := MyFun(1,2); {调用函数} //i := Unit2.MyFun(1,2); {有时为了避免重名, 需要这样调用} ShowMessage(IntToStr(i)); {3} end;
5.方法的提前声明
如果前面的方法需要调用后面的方法,则需要在被调用的方法中声明forward指示字。例如:
function MyFunB(x: Integer): Integer; forward; {使用 forward 指示字提前声明} function MyFunA(x: Integer): Integer; begin Result := MyFunB(x) * 3; {要调用后面的方法, 后面的方法需要提前声明} end; function MyFunB(x: Integer): Integer; begin Result := Abs(x); end;
但如果该方法已在interface区中提前声明了,那么就无需在对方法添加forward指示字了。
6.静态数组做参数
对于静态数组做参数,我们需要在Type区把数组定义成一个类型,在对该类型定义一个变量,最后在使用该变量。例如:
//应该先把数组定义成一个类型 Type IntArray = array[0..9] of Integer; {先把需要的数组定义成一个类型} //给一个静态数组求和的函数 function MyFun(arr: IntArray): Integer; var i: Integer; begin Result := 0; for I:= 0 to Length(arr)-1 do begin Result := Result + arr[I]; end; end;
而对于开放数组参数,则可以将其直接作为参数来使用,不需要在Type区将其定义为一个类型。例如:
function MyFun(const arr: array of Integer): Integer;
对于遍历开放数组也需要注意,因不知其长度,所以在遍历时需要用到Low()和High()方法,例如:
for i := Low(iArr) to High(iArr) do begin iArr[i] := i + 1; end;
7.指针参数
在方法中传递指针,我们需要用指针类型来定义。具体实现如下:
function MyFun(p: PInteger): Integer; {PInteger 是 Integer 的指针类型} begin p^ := p^ * 2; Result := p^; end;
在调用该函数时,需要用@来获取变量的地址,例如:
var i,x: Integer; begin i := 8; x := MyFun(@i);
9.方法重载
方法的重载只要用在方法重名但参数不一样的情况,在方法后面必须声明overload指示字。在调用时根据参数来决定调用哪个方法。这与其他语言的重载相似。在published区中的方法命名要有唯一性,该区域方法不能被重载。
相关文章推荐
- Delphi的学习笔记十一——类3
- Delphi的学习笔记十一——类1
- Delphi的学习笔记十一——类
- Delphi学习笔记十一——类2
- Delphi的学习笔记十一——类1
- Delphi的学习笔记十一——类3
- Delphi的学习笔记十一——类4
- 【OpenCV学习笔记】十一、基本图像运算
- 初探swift语言的学习笔记十一(performSelector)
- python 学习笔记(十一)
- 七海的java学习笔记(十一)
- Java并发读书学习笔记(十一)——原子变量与非阻塞同步机制
- 理解windows消息机制-delphi消息机制学习笔记。
- javascript学习笔记(十一)对表格进行排序(包括数值、字符串、日期等数据类型)
- Delphi的学习笔记八——内存操作函数
- Delphi的学习笔记九——汉字与区位码(转自万一博客)
- Git学习笔记(十一) Git克隆
- Delphi-IOCP学习笔记<四>===小结<IOCP的简单例子>
- 微软企业库4.1学习笔记(十一)企业库的核心类
- linux学习笔记十一:srpm软件包(*.src.rpm)的安装