|
8、構造函數(shù)(constructor)
當創(chuàng)建一個對象時,系統(tǒng)先根據(jù)類定義的成員變量為對象分配內存空間,然后自動調用對象的構造函數(shù)對這段內存空間進行初始化處理,從而完成對象的初始化。
構造函數(shù)的作用:
為對象分配空間;對數(shù)據(jù)成員賦初值,請求其他資源
構造函數(shù)的調用:
構造函數(shù)的特點:
構造函數(shù)是與類同名的成員函數(shù)
可有任意類型的參數(shù),但沒有返回類型
若構造函數(shù)無參數(shù),則聲明對象時也不能給出參數(shù)
構造函數(shù)的種類:
帶參數(shù)的構造函數(shù)可以在創(chuàng)建對象時,用具體數(shù)值初始化數(shù)據(jù)
成員和各種數(shù)據(jù)元素?煞奖銓崿F(xiàn)對不同對象進行初始化。
構造函數(shù)的首部:構造函數(shù)名(形參列表)
定義對象的一般格式
類名 對象名(實參列表)
重載構造函數(shù):
構造函數(shù)可以像普通函數(shù)一樣被重載
在類中可以定義多個構造函數(shù),以便對類對象提供不同的初始化方法
根據(jù)說明中的參數(shù)個數(shù)和類型選擇合適的構造函數(shù)9、析構函數(shù)(destructor)
構造函數(shù)的反函數(shù),析構函數(shù)是用于取消對象成員函數(shù),當一個對象生命期結束時,系統(tǒng)自動調用析構函數(shù),釋放對象所占內存空間。
析構函數(shù)的作用:
進行清除對象,釋放內存等
10、This指針:
This指針是一個特殊的隱藏在對象中的指針,每一個處于生存期的對象都有一個this指針,用于指向對象本身。
當類的某個非靜態(tài)成員函數(shù)被調用時,系統(tǒng)通過this指針確定是哪一個對象的該成員函數(shù)被調用。實際上,this指針總是作為一個隱含參數(shù)傳遞給類的每一個成員函數(shù)。
11、靜態(tài)成員
關鍵字static用于說明一個類的靜態(tài)成員
- 靜態(tài)成員提供了一個同類對象的共享機制
把一個類的成員說明為stastic時,這個類無論有多少個對象被創(chuàng)建,這些對象共享這個stastic成員
- 靜態(tài)成員屬于類,它不是對象成員。
靜態(tài)類成員數(shù)據(jù):
- 靜態(tài)成員是指聲明為static的類成員在類的范圍內所有對象共享某個數(shù)據(jù)
- 類定義中的靜態(tài)成員生命期與整個程序相同
- 靜態(tài)成員變量在類的內部聲明,類的外部定義
- 靜態(tài)數(shù)據(jù)成員不從屬于任何一個具體對象,所以必須對它初如化,且對它的初始化不能在構造函數(shù)中進行。
靜態(tài)數(shù)據(jù)成員的使用方法如下:(這個需要補充)
靜態(tài)數(shù)據(jù)成員的定義與一般數(shù)據(jù)成員相似,但前面要加上Stastic關鍵詞
靜態(tài)數(shù)據(jù)成員VS全部變量:
靜態(tài)成員的訪問:
公有靜態(tài)成員:
(1)通過對象訪問,如: person1.count
(2) 在成員函數(shù)中訪問
私有和保護靜態(tài)成員:只能在成員函數(shù)中訪問
靜態(tài)成員函數(shù):
可由任意訪問權限許可的函數(shù)訪問。
和一般成員函數(shù)類似,靜態(tài)成員函數(shù)也有訪問限制,私有靜態(tài)成員函數(shù)
不能由外界訪問。
只能訪問靜態(tài)數(shù)據(jù)成員、靜態(tài)成員函數(shù)和類以外的函數(shù)和數(shù)據(jù);不能訪問
類中的非靜態(tài)數(shù)據(jù)成員。
靜態(tài)成員函數(shù)沒有this指針
靜態(tài)成員函數(shù)的作用:
處理靜態(tài)數(shù)據(jù)成員
說明:在freebasic中將對象作為靜態(tài)成員函數(shù)的參數(shù),然后可以通過對象來訪問它的非靜態(tài)數(shù)據(jù)成員。
例子
Type foo
Declare Static Sub f (ByRef As foo)
i As Integer
End Type
Sub foo.f (ByRef self As foo) ‘這里的self就是類foo的一個實例對象。如果沒有self這個實例對象,訪問非靜態(tài)成員將會編譯錯誤。
Print self.i
End Sub
靜態(tài)成員函數(shù)VS非靜態(tài)成員函數(shù):
根本區(qū)別是:
|站長郵箱|小黑屋|手機版|Office中國/Access中國
( 粵ICP備10043721號-1 )
GMT+8, 2025-7-13 03:08 , Processed in 0.104655 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.