Freebasic的作用_第1頁
Freebasic的作用_第2頁
Freebasic的作用_第3頁
Freebasic的作用_第4頁
Freebasic的作用_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Freebasic能用來做什么?仁都見仁,智者見智。以下是我個人膚淺的理解1、Freebasic比vba更適合跟硬件打交道。2、 Freebasic的dll可以直接被python和aauto等動態(tài)語言調(diào)用。需要性能的地方用Freebasic,可 以顯著提高性能。當(dāng)然這只是針對不想學(xué)C/C+的人而言。3、 Freebasic可以編譯成原生的 64位。如果使用office64 位,那么可以用freebasic 編寫64位的dll 供vba調(diào)用。注:Freebasic不易用。個人喜好,僅供參考,急于求成者,慎入Freebasic的數(shù)據(jù)類型:類型范圍大小冬瓜湯備注說明指針類型指針類型Ptr,Point

2、er數(shù)據(jù)指針I(yè)nteger隨系統(tǒng)32位或64位變化而變 化。32位中轉(zhuǎn)變成long大小,64 位中轉(zhuǎn)成longint 大小。相當(dāng)于 VBA中的longPtrUINTEGER整型字節(jié)型BYTE-127 至 288整型SHORT-32768 至 32767相當(dāng)于 VBA中的integer長整型LONG 或 integer-2147483648 至 2147483647相當(dāng)于VBA中的long在32位的FB中integer 等價long64位長整型LONGINT-9 223 372 036 854 775 808 至 9 223 372 036 854 775 807相當(dāng)于 VBA中的LongLon

3、g無符整型字節(jié)型UBYTE0 至 255相當(dāng)于 VBA中的Byte無符整型USHORT0 至 65535無符長整型ULONG0 至 4294967295無符64位ULONGINT0 至 9 223 372 036 854 775807單精度SINGLE雙精度DOUBLE字符串String0至2147483647 個字節(jié)定長字符串String *NC字符串Zstring同上兼容c寬字符串WstringWstring 主要用于 Unicode兼容c+對象ObjectFreebasic 操作符:+拼接多個字符串,如果其中一個變量不是string,將返回錯字符串操作符誤&強制拼接多個字符串。如果其中一

4、個變量不是string,將自動轉(zhuǎn)成string數(shù)學(xué)運算符+-*/Amod-取負(fù)SHL將一個數(shù)值表達(dá)式的位左移SHR將一個數(shù)值表達(dá)式的位右移=比較運算符=訪問成員的指針=賦值&=Str2 &=str1相當(dāng)于 str2=str2&str1+=-=*=賦值操作符/=A =Mod=An(d=Or=XoiEqv=Lmp=Shl=Shr=Let賦值語句,基本不用Let()司上12、基類和子類一個基類可以是另一個基類的子類,這樣便形成了復(fù)雜的繼承結(jié)構(gòu)。岀現(xiàn)了類的層次一個基類派岀一個子類 A,該子類又做了另一個子類 B的基類。則原來的基類為子類 B的間接基類。子類是基類的特殊化子類是基類定義的延續(xù)基類是子類的

5、公有特性子類將其自身與基類區(qū)別開來的方法是添加數(shù)據(jù)成員和成員函數(shù)如何定義子類呢?Type學(xué)生End typeType 大學(xué)生extends 學(xué)生End type注意:關(guān)鍵詞extends是復(fù)數(shù)形式13、Freebasic繼承的方式目前到freebasicl.O為止,F(xiàn)B的子類只能以public方式繼承自基類。(也許是我不知道如何使用protected方式繼承)Public方式的特點:可以在子類的成員函數(shù)中訪問基類的非私有成員數(shù)據(jù)可通過子類的對象直接訪問基類的公有成員14、基類和子類的重名成員子類定義了與基數(shù)同名的成員,在子類中訪問同名成員時,自動隱藏基類的同名成員在子類中使用基類的同名成員,可

6、以顯式使用基類名.成員或base.成員15、基類和子類的構(gòu)造函數(shù)一個子類對象也屬于其基類,因此當(dāng)程序創(chuàng)建一個子類對象時,系統(tǒng)首先自動創(chuàng)建一個基類的對象。在調(diào)用子類的構(gòu)造函數(shù)構(gòu)建子類對象時,系統(tǒng)首先調(diào)用基類的構(gòu)造函數(shù)構(gòu)建基類對象,當(dāng)子類對象的生存期結(jié)束時,首先調(diào)用子類的析構(gòu)函數(shù),然后調(diào)用基類的析構(gòu)函數(shù)基類構(gòu)造函數(shù)的調(diào)用方式:隱式調(diào)用和顯式調(diào)用兩種方式:(1)隱式方式是指在子類的構(gòu)造函數(shù)中不指定對對應(yīng)的基類的構(gòu)造函數(shù),調(diào)用的是基類的默認(rèn) 構(gòu)造函數(shù)即含有缺省參數(shù)值和不帶有參數(shù)的構(gòu)造函數(shù))(2)顯式方式是指在子類的構(gòu)造函數(shù)中指定要調(diào)用的基類構(gòu)造函數(shù)。并將子類構(gòu)造函數(shù)的部分 參數(shù)值傳遞給基類構(gòu)造函數(shù)(注

7、:除非基類有默認(rèn)的構(gòu)造函數(shù),否則必須采用顯式調(diào)用方式)16、多態(tài)性和虛函數(shù)什么是多態(tài)性?多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計的一個重要特征,它主要表現(xiàn)在函數(shù)調(diào)用時實現(xiàn)“一種接口,多種方 法”。兩種多態(tài)性:編譯時多態(tài)性和運行時多態(tài)性。編譯時多態(tài)性:在函數(shù)名或運算符相同的情況下,編譯器在編譯階段就能能夠根據(jù)函數(shù)參數(shù)類型的不同來確定要調(diào)用的函數(shù)一通過重載實現(xiàn)。運行時多態(tài)性:在函數(shù)名、函數(shù)參數(shù)和返回類型都楨同的情況下,只能在程序運行時才能確定要調(diào)用的函數(shù)一一通過虛函數(shù)實現(xiàn)。17、虛函數(shù) virtual虛函數(shù)是在基類中冠以 virtual的成員函數(shù)。它提供了一種接口虛函數(shù)可以在一個或多個子類中被重定義實現(xiàn)運行時多態(tài)

8、的關(guān)鍵首先是要說明虛函數(shù)必須用基類指針調(diào)用子類的不同實現(xiàn)版本。(1)、虛函數(shù)的定義定義:在某基類中聲明為virtual并在一個或多個子類中被重新定義的成員函數(shù)。語法:virtual Function 或sub函數(shù)名(參數(shù)表)End function用途:實現(xiàn)多態(tài)性,通過指向子類的基類指針,訪問子類中同名覆蓋成員函數(shù)虛函數(shù)必須是基類的非靜態(tài)成員函數(shù),其訪問權(quán)限可以是protected 或public。定義為virtual的函數(shù)是基類期待子類重新定義的,基類希望子類繼承的函數(shù)不能定義 為虛函數(shù)。(2)、虛函數(shù)的作用虛函數(shù)的作用是實現(xiàn)動態(tài)聯(lián)編,也就是在程序的運行階段動態(tài)地選擇合適的成員函數(shù),在定義了

9、虛函數(shù)后,可以在基類的子類中對虛函數(shù)重新定義,在子類中重新定義的函數(shù)應(yīng)與虛函數(shù)具有相 同的形參|個數(shù)和形參類型。以實現(xiàn)統(tǒng)一的接口,不同定義過程。如果在子類中沒有對虛函數(shù)重新定義, 則它繼承其基類的虛函數(shù)。當(dāng)程序發(fā)現(xiàn)虛函數(shù)名前的關(guān)鍵字virtual后,會自動將其作為動態(tài)聯(lián)編處理,即在程序運行時動態(tài)地選擇合適的成員函數(shù)。虛函數(shù)是FreeBasic多態(tài)的一種表現(xiàn)。使用虛函數(shù),我們可以靈活的進(jìn)行動態(tài)綁定,當(dāng)然是以一定的開銷為代價。如果父類的函數(shù)(方法)根本沒有必要或者無法實現(xiàn),完全要依賴子類去實現(xiàn)的話,可以把此函數(shù)(方法)設(shè)為virtual函數(shù)名=0我們把這樣的函數(shù)(方法)稱為純虛函數(shù),如果一個類包含

10、了純虛函數(shù),稱此類為抽象類。我們只需在把基類的成員函數(shù)設(shè)為virtual,其子類的相應(yīng)的函數(shù)也會自動變?yōu)樘摵瘮?shù)。(3)虛函數(shù)的動態(tài)綁定過程表面點來說,虛函數(shù)是根據(jù)調(diào)用它的指針或引用所指向或綁定的對象的類型來調(diào)用綁定或指向的類型所定義的虛函數(shù)版本。由于類中有虛函數(shù)存在,所以編譯器就會為這個類插入一段你不知道的數(shù)據(jù),并為它創(chuàng)建一個表。那段數(shù)據(jù)叫做vptr指針,指向那個表。那個表叫做vtbl,每個類都有自己的vtbl ,vtbl的作用就是保存自定義為virtual的函數(shù)是基類期待子類重新定義的,基類希望子類繼承的函數(shù)不能定義為虛函數(shù)?;?中虛函數(shù)的地址,我們可以把vtbl形象地看成一個數(shù)組,這個數(shù)

11、組的每個元素存放的就是虛函數(shù)的地址。 調(diào)用虛函數(shù)時,首先是取出vptr的值,這個值就是vtbl的地址,再根據(jù)這個值來到 vtbl這里,取出vtbl 中相應(yīng)的slot里的值,這個值就是所在調(diào)用的虛函數(shù)的地址了,最后調(diào)用這個函數(shù)?,F(xiàn)在我們可以看岀 來了,只要vptr不同,指向的vtbl就不同,而不同的 vtbl里裝著對應(yīng)類的虛函數(shù)地址,所以這樣虛函 數(shù)就可以完成它的任務(wù)。(4) 純虛函數(shù)在基類中不能對虛函數(shù)給岀有意義的實現(xiàn),而把它聲明為純虛函數(shù),它的實現(xiàn)留給該基類的子類去 做。這就是純虛函數(shù)的作用。純虛函數(shù)可以讓類先具有一個操作名稱,而沒有操作內(nèi)容,讓子類在繼承時再去具體地給岀定義。 凡是含有純虛

12、函數(shù)的類叫做抽象類。這種類不能聲明對象,只是作為基類為子類服務(wù)。除非在子類中完 全實現(xiàn)基類中所有的的純虛函數(shù),否則,子類也變成了抽象類,不能實例化對象。在函數(shù)形參后面寫上 =0以指定純虛函數(shù)。17、函數(shù)重載函數(shù)重載:是指一組功能類似但函數(shù)參數(shù)類型(或個數(shù))不同的函數(shù)可以共用一個函數(shù)名。當(dāng)FB編譯器遇到重載函數(shù)的調(diào)用語句時,它能夠根據(jù)不同的參數(shù)類型或不同的參數(shù)個數(shù)選擇一個合適的 函數(shù)。不能利用函數(shù)返回類型的不同進(jìn)行函數(shù)重載。因為在沒有確定調(diào)用的是哪個函數(shù)之前,不知道函數(shù)的返回類型。同樣,不能利用引用進(jìn)行函數(shù)重載。一般函數(shù)的重載使FB程序具有更好的可擴充性。此外。類的成員函數(shù)也可以重載,特別是構(gòu)造

13、函數(shù)的重 載給FB程序設(shè)計帶來很大的靈活性。如何區(qū)別重載、重寫(覆蓋)和隱藏 ?(1).重載:重載從overload翻譯過來,是指同一可訪問區(qū)內(nèi)被聲明的幾個具有不同參數(shù)列(參數(shù)的類型,個數(shù),順序不同)的同名函數(shù),根據(jù)參數(shù)列表確定調(diào)用哪個函數(shù),重載不關(guān)心函數(shù)返回類型。示例代碼如下:Type Apublic:sub test( I as integer);sub test( I as double);sub test( I as integer, j as double);sub test(I as sing, j as long);function test(I as integer) as l

14、ong;錯誤,非重載end type前四個互為重載函數(shù),最后一個和第一個不是重載函數(shù)。(2).隱藏:隱藏是指子類的函數(shù)屏蔽了與其同名的基類函數(shù)。注意只要同名函數(shù),不管參數(shù)列表是否相同,基類函數(shù)都會被隱藏。(3).重寫:重寫翻譯自override,也翻譯成覆蓋(更好一點),是 指子類中存在重新定義的函數(shù)。其函數(shù)名,參數(shù)列表,返回值類型,所有都必須同基類中被重寫的函數(shù)一致。只有函數(shù)體不同,子類調(diào)用時會 調(diào)用子類的重寫函數(shù),不會調(diào)用被重寫函數(shù)。重寫的基類中被重寫的函數(shù)必須有virtual修飾。Type Apublic:virtual Function fun3( I as long) as longreturn i+1end functionend typetype B extends A B 從 A 繼承public:重寫virtual Function fun3( I as long) as longreturn i*3end functionend type重載和重寫的區(qū)別:(1) 范圍區(qū)別:重寫和被重寫的函數(shù)在不同的類中,重載和被重載的函數(shù)在同一類中。(2) 參

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論