Delphi的學習筆記十一 類4

2021-06-12 01:57:02 字數 2588 閱讀 2047

1.類的方法引數可以分為四種(預設引數(傳值)、var(傳址)、out(輸出)、const(常數))。這裡需要注意的是var定義的引數,例如:

function myf2(var x: integer): integer;

begin

inc(x);

result := x;

end;

對於out(輸出),其用法和var一致,所以在一般情況下我們採用var來定義而不是out;對於const,則表示該定義的變數為常量,常量的值無法改變。

2.implementation區/inte***ce區的方法

對於implementation區中的方法,只能在本單元中呼叫。這裡就不舉例子了,在之前的舉例中都有涉及。

對於inte***ce區中的方法,可以被其它單元呼叫。

3.在類中的方法

如果乙個方法被宣告在乙個類中,那麼呼叫該方法前就必須先對該類進行初始化。這與其他語言對於類中方法的呼叫是一致的;並且在實現該方法時,必須在方法名前加上類的字首,例如:

function tform1.myfun(x,y: integer): integer;

begin

result := x + y;

end;

4.呼叫其他單元的函式

在呼叫其他單元的函式時,被呼叫單元的函式必須在inte***ce區中宣告,並在implementation區中也實現。在呼叫時,我們需要對其單元進行引用,例如:

implementation

uses unit2;

procedure tform1.button1click(sender: tobject);

var i: integer;

begin

i := myfun(1,2);

//i := unit2.myfun(1,2);

showmessage(inttostr(i));

end;

5.方法的提前宣告

如果前面的方法需要呼叫後面的方法,則需要在被呼叫的方法中宣告forward指示字。例如:

function myfunb(x: integer): integer; forward; 

function myfuna(x: integer): integer;

begin

result := myfunb(x) * 3;

end;

function myfunb(x: integer): integer;

begin

result := abs(x);

end;

但如果該方法已在inte***ce區中提前宣告了,那麼就無需在對方法新增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; 

begin

p^ := p^ * 2;

result := p^;

end;

var

i,x: integer;

begin

i := 8;

x := myfun(@i);

9.方法過載

方法的過載只要用在方法重名但引數不一樣的情況,在方法後面必須宣告overload指示字。在呼叫時根據引數來決定呼叫哪個方法。這與其他語言的過載相似。在published區中的方法命名要有唯一性,該區域方法不能被過載。

十一 類的靜態成員

成員變數的回顧 通過物件名能夠訪問public成員變數 每個物件都可以有屬於自己的成員變數 成員變數不能在物件之間共享 新的需求 統計類的程式執行期間有多少個物件同時存在 保證程式的安全性,並隨時可以獲取物件的數目 問題 使用普通的成員變數可行嗎?類的靜態成員 在c 中可以定義靜態成員變數和靜態成員...

C 複習之路十一 類的繼承

一 複習三種訪問控制符 public 修飾的成員變數或者方法,可以在類的外部或者類的內部使用 private 修飾的成員變數或者方法,只能在類的內部使用,外部不能使用 protected 修飾的成員變數或者方法,只能在類的內部或者子類內部使用,不能在類的外部使用 這三種訪問控制符可以修飾類的成員屬性...

C 學習筆記(一) 類

c 使用關鍵字 class 來定義類。其基本結構如下 class myclass 定義這樣乙個類後,就可以在能訪問該定義的工程的其他地方對該類進行例項化。預設情況下,類宣告為內部的,即只有當前工程中的 才能訪問它。可以用internal 訪問修飾符關鍵字顯式指定,但這不是必須的,類在定義時預設為此型...