注冊 登錄
Office中國論壇/Access中國論壇 返回首頁

ganlinlao的個人空間 http://m.mzhfr.cn/?230471 [收藏] [復制] [分享] [RSS]

日志

FreeBasic的面向對象入門二——冬瓜湯整理

已有 2871 次閱讀2014-10-7 14:34 |個人分類:FreeBasic

8、構造函數(shù)(constructor

          當創(chuàng)建一個對象時,系統(tǒng)先根據(jù)類定義的成員變量為對象分配內存空間,然后自動調用對象的構造函數(shù)對這段內存空間進行初始化處理,從而完成對象的初始化。

構造函數(shù)的作用:

      為對象分配空間;對數(shù)據(jù)成員賦初值,請求其他資源

構造函數(shù)的調用:

  • 生成類對象時,其成員可用類的構造函數(shù)初始化。
  • 當類對象進入其作用域,自動調用構造函數(shù)

構造函數(shù)的特點:

      構造函數(shù)是與類同名的成員函數(shù)

      可有任意類型的參數(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ù)沒有參數(shù)和返回值
  • 一個類中只可能定義一個析構函數(shù)
  • 析構函數(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)數(shù)據(jù)成員,各對象之間的數(shù)據(jù)有了溝通的渠道,實現(xiàn)數(shù)據(jù)共享。
  • 全局變量破壞了封裝原則,不符合面向對象程序的要求。
  • 公用靜態(tài)數(shù)據(jù)成員與全局變量的作用域不同
  • 靜態(tài)數(shù)據(jù)成員的作用域中限于定義該類的作用域內。

 

靜態(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ū)別是:

  • 非靜態(tài)成員函數(shù)有this指針
  • 靜態(tài)成員函數(shù)沒有this指針。由此決定了靜態(tài)成員函數(shù)不能訪問本類中的非靜態(tài)成員。


評論 (0 個評論)

facelist doodle 涂鴉板

您需要登錄后才可以評論 登錄 | 注冊

QQ|站長郵箱|小黑屋|手機版|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.

返回頂部