第212章VisualC教學(xué)案例_第1頁(yè)
第212章VisualC教學(xué)案例_第2頁(yè)
第212章VisualC教學(xué)案例_第3頁(yè)
第212章VisualC教學(xué)案例_第4頁(yè)
第212章VisualC教學(xué)案例_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C++簡(jiǎn)介什么是C++?C++是基于C語(yǔ)言發(fā)展起來(lái)的一種新的程序設(shè)計(jì)語(yǔ)言。C語(yǔ)言誕生于20世紀(jì)70年代,是一種應(yīng)用相當(dāng)廣泛的程序設(shè)計(jì)語(yǔ)言(尤其是在系統(tǒng)程序設(shè)計(jì)領(lǐng)域)。C語(yǔ)言簡(jiǎn)潔、高效,但是C語(yǔ)言也有其自身的缺點(diǎn),例如弱的類型檢查機(jī)制等,使得使用C語(yǔ)言開發(fā)大型的應(yīng)用程序比較困難。C++簡(jiǎn)介20世紀(jì)80年代,美國(guó)貝爾實(shí)驗(yàn)室的BjarneStroustrup博士及其同事在C語(yǔ)言的基礎(chǔ)上引入了面向?qū)ο蟮木幊趟枷牒鸵粋€(gè)class關(guān)鍵字,形成了最早的C++語(yǔ)言原型。后來(lái),C++語(yǔ)言被融入了越來(lái)越多的語(yǔ)言特性,其中最具有意義、影響最深遠(yuǎn)的莫過于template(模板)的引入,最終美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)ANSI(AmericanNationalStandardInstitute)和國(guó)際標(biāo)準(zhǔn)化組織ISO(InternationalStandardsOrganization)一起對(duì)C++語(yǔ)言進(jìn)行了標(biāo)準(zhǔn)化工作,并于1998年正式發(fā)布了C++語(yǔ)言的國(guó)際標(biāo)準(zhǔn)ISO/IEC:98-14882。C++已經(jīng)成為最流行的程序設(shè)計(jì)語(yǔ)言之一。VisualC++集成開發(fā)環(huán)境集成開發(fā)環(huán)境(IDE)是一個(gè)將程序編輯器、編譯器、調(diào)試工具和其他建立應(yīng)用程序的工具集成在一起的用于開發(fā)應(yīng)用程序的軟件系統(tǒng)。VisualC++軟件包中的DeveloperStudio就是一個(gè)集成開發(fā)環(huán)境,它集成了各種開發(fā)工具和VC編譯器。程序員可以在不離開該環(huán)境的情況下編輯、編譯、調(diào)試和運(yùn)行一個(gè)應(yīng)用程序。IDE中還提供大量在線幫助信息協(xié)助程序員做好開發(fā)工作。DeveloperStudio中除了程序編輯器、資源編輯器、編譯器、調(diào)試器外,還有各種工具和向?qū)Вㄈ鏏ppWizard和ClassWizard),以及MFC類庫(kù),這些都可以幫助程序員快速而正確地開發(fā)出應(yīng)用程序。VisualC++簡(jiǎn)介向?qū)且粋€(gè)通過一步步的幫助引導(dǎo)你工作的工具。AppWizard:用來(lái)創(chuàng)建一個(gè)Windows程序的基本框架結(jié)構(gòu)。AppWizard向?qū)?huì)一步步向程序員提出問題,詢問他所創(chuàng)建的項(xiàng)目的特征,然后AppWizard會(huì)根據(jù)這些特征自動(dòng)生成一個(gè)可以執(zhí)行的程序框架,程序員然后可以在這個(gè)框架下進(jìn)一步填充內(nèi)容。ClassWizard:用來(lái)定義AppWizard所創(chuàng)建的程序中的類。可以利用ClassWizard在項(xiàng)目中增加類、為類增加處理消息的函數(shù)等。以及將MFC對(duì)象或者類的成員變量與對(duì)話框中的控件聯(lián)系起來(lái)。MFC庫(kù)庫(kù)(library)是可以重復(fù)使用的源代碼和目標(biāo)代碼的集合。MFC(MicrosoftFundationClasses)是VisualC++開發(fā)環(huán)境所帶的類庫(kù),在該類庫(kù)中提供了大量的類,可以幫助開發(fā)人員快速建立應(yīng)用程序。這些類可以提供程序框架、進(jìn)行文件和數(shù)據(jù)庫(kù)操作、建立網(wǎng)絡(luò)連接、進(jìn)行繪圖和打印等各種通用的應(yīng)用程序操作。使用MFC庫(kù)開發(fā)應(yīng)用程序可以減少很多工作量。

VC++不同于標(biāo)準(zhǔn)C++的核心就是MFC。VC++編程的精髓也是MFC.參考書VisualC++開發(fā)教程清華出版社VisualC++技術(shù)內(nèi)幕MFCWindows程序設(shè)計(jì)深入淺出MFCC++基礎(chǔ)2.1簡(jiǎn)單C++程序#include<iostream.h>voidmain(){doubler,area; //聲明變量cout<<"輸入圓的半徑:"; //顯示提示信息cin>>r; //從鍵盤上輸入r的值area=3.14159*r*r; //計(jì)算面積cout<<"圓的面積為:"<<area<<"\n";//輸出}該程序經(jīng)編譯、鏈接、運(yùn)行后,屏幕上顯示:輸入圓的半徑:此時(shí)等待用戶輸入,當(dāng)輸入10并按Enter鍵后,屏幕顯示:圓的面積為:314.159Pressanykeytocontinue2.1.1從結(jié)構(gòu)到類

[例Ex_StructToClass]從結(jié)構(gòu)到類的示例#include<iostream.h>structMY_CIRCLE{ intID;//圓的ID. intx,y;//圓心坐標(biāo) intradius; //半徑};floatGetArea(MY_CIRCLEcircle) //計(jì)算平均成績(jī){ return(3.14*circle.radius*circle.radius);}voidmain(){ MY_CIRCLEC1; C1.radius=10;C1.ID=1; cout<<"圓"<<C1.ID<<"的面積是:"<<GetArea(C1)<<endl;}運(yùn)行結(jié)果如下:圓1的面積是314結(jié)構(gòu)體的缺點(diǎn)無(wú)法把函數(shù)定義在結(jié)構(gòu)體里。封裝度不夠數(shù)據(jù)不夠安全類和對(duì)象類(Class)面向?qū)ο笏枷雭?lái)源于對(duì)現(xiàn)實(shí)世界的認(rèn)知。現(xiàn)實(shí)世界繽紛復(fù)雜、種類繁多,難于認(rèn)識(shí)和理解。但是聰明的人們學(xué)會(huì)了把這些錯(cuò)綜復(fù)雜的事物進(jìn)行分類,從而使世界變得井井有條。比如我們由各式各樣的汽車抽象出汽車的概念,由形形色色的貓抽象出貓的概念,由五彩斑斕的鮮花抽象出花的概念等。汽車、貓、鮮花都代表著一類事物。每一類事物都有特定的狀態(tài),比如汽車的品牌、時(shí)速、馬力、耗油量、座椅數(shù),小貓的年齡、體重、毛色,鮮花的顏色、花瓣形狀、花瓣數(shù)目,都是在描述事物的狀態(tài)。每類事物也都有一定的行為,比如汽車啟動(dòng)、行駛、加速、減速、剎車、停車,貓捉老鼠,鮮花盛開。這些不同的狀態(tài)和行為將各類事物區(qū)分開來(lái)。類和對(duì)象對(duì)象(object)對(duì)象則是類的具體實(shí)例。比如人是一個(gè)類,司馬遷、李白、杜甫都是對(duì)象;首都是一個(gè)類,則北京、倫敦、華盛頓、莫斯科都是對(duì)象;動(dòng)畫貓是一個(gè)類,則Kitty、Grafield和Doraemon都是對(duì)象類和對(duì)象類是抽象的概念,對(duì)象是真實(shí)的個(gè)體。我們可以說(shuō)Kitty貓的體重是1.5kg,而不能說(shuō)貓類的體重是1.5kg;可以說(shuō)劉翔在跨欄比賽中奪冠,而不說(shuō)人類在跨欄比賽中奪冠。一般情況下我們認(rèn)為狀態(tài)是描述具體對(duì)象而非描述類的,行為是由具體對(duì)象發(fā)出的而非類發(fā)出的。類和對(duì)象封裝(Encapsulation)制造汽車的過程中什么人最牛?當(dāng)然不是焊鋼板的,也不是裝輪胎的,更不是擰螺絲的,而是設(shè)計(jì)汽車的工程師,因?yàn)樗榔嚨倪\(yùn)行原理。但是我們開車時(shí),需要知道汽車的運(yùn)行原理嗎?顯然不需要。汽車的運(yùn)行原理已經(jīng)被偉大的工程師封裝在汽車內(nèi)部,提供給司機(jī)的只是一個(gè)簡(jiǎn)單的使用接口,司機(jī)操縱方向盤和各種按鈕就可以靈活自如的開動(dòng)汽車了。與制造汽車相似,面向?qū)ο蠹夹g(shù)把事物的狀態(tài)和行為的實(shí)現(xiàn)細(xì)節(jié)封裝在類中,形成一個(gè)可以重復(fù)使用的“零件”。類一旦被設(shè)計(jì)好,就可以像工業(yè)零件一樣,被成千上萬(wàn)的對(duì)其內(nèi)部原理毫不知情的程序員使用。類的設(shè)計(jì)者相當(dāng)于汽車工程師,類的使用者相當(dāng)于司機(jī)。這樣程序員就可以充份利用他人已經(jīng)編寫好的“零件”,而將主要精力集中在自己的專署領(lǐng)域。類和對(duì)象接口(Interface)假設(shè)你是一個(gè)環(huán)保人士,最近你用節(jié)能燈代替了普通的白熾燈。白熾燈通過加熱電阻絲照亮整個(gè)屋子;熒光燈則是激活空氣中的某些分子的電子能而發(fā)光。雖然它們的原理不同,但是它們的接口卻是相同的。所以你只需擰下白熾燈,然后再擰上熒光燈即可,輕易的實(shí)現(xiàn)“零件”的更新?lián)Q代。同樣,在面向?qū)ο缶幊讨校灰3纸涌诓蛔儯憧梢匀我飧念惖膶?shí)現(xiàn)細(xì)節(jié),用一個(gè)設(shè)計(jì)更好的類替換原來(lái)的類,實(shí)現(xiàn)類的升級(jí)換代。現(xiàn)在軟件維護(hù)和修改的成本已經(jīng)占到了整個(gè)軟件開發(fā)的80%,類的這一編成思想極大的方便了程序的維護(hù)和修改,降低了軟件成本。2.1.2類的定義

類一般分為聲明部分和實(shí)現(xiàn)部分。類體C++中定義類的一般格式如下:class<類名>{ private: [<私有數(shù)據(jù)和函數(shù)>] public: [<公有數(shù)據(jù)和函數(shù)>]};<各個(gè)成員函數(shù)的實(shí)現(xiàn)>class是定義類的關(guān)鍵字,class的后面是用戶定義的類名。類中的數(shù)據(jù)和函數(shù)是類的成員,稱為數(shù)據(jù)成員和成員函數(shù)。2.1.2類的定義定義類時(shí)還應(yīng)注意:(1)在“public:”或“private:”后面成員都是公有或私有的,直到下一個(gè)“public:”或“private:”出現(xiàn)為止。(2)關(guān)鍵字public和private在類中出現(xiàn)多次,前后的順序沒有關(guān)系。(3)除了public和private外,關(guān)鍵字protected也可修飾成員的類型。(4)數(shù)據(jù)成員的類型可以是任意的,包含整型、浮點(diǎn)型、字符型、數(shù)組、指針等。

VisualC++6.0為用戶創(chuàng)建的應(yīng)用程序框架中都是將各個(gè)類以.h和同名的.cpp文件來(lái)組織的。2.1.2類的定義MY_CIRCLE類定義了一個(gè)getArea()函數(shù)。classMY_CIRCLE{public: intx,y,radius; intID;public: doublegetArea(); MY_CIRCLE(); virtual~MY_CIRCLE();};doubleMY_CIRCLE::getArea(){return3.14*radius*radius;}MY_CIRCLE::MY_CIRCLE(){}MY_CIRCLE::~MY_CIRCLE(){}2.1.3對(duì)象的定義

一個(gè)類定義后,就可以定義該類的對(duì)象,如下面的格式:<類名><對(duì)象名列表>類名是用戶已定義過的類的標(biāo)識(shí)符,對(duì)象名可以有一個(gè)或多個(gè),多個(gè)時(shí)要用逗號(hào)分隔。MY_CIRCLEc1,*c2;一個(gè)對(duì)象就是該對(duì)象的類所定義的成員,引用時(shí)可用下列方式:<對(duì)象名>.<成員名>(<參數(shù)表>)前者表示引用數(shù)據(jù)成員,后者表示引用成員函數(shù)。“.”是成員運(yùn)算符c1.x,c1.GetArea();對(duì)于指針對(duì)象的成員引用可用下列方式:<對(duì)象指針名>-><成員名>(<參數(shù)表>)c2->GetArea();c2->ID“->”也是一個(gè)成員運(yùn)算符,與“.”運(yùn)算符的區(qū)別是:“->”用來(lái)訪問指針對(duì)象的成員,而“.”用來(lái)訪問一般對(duì)象的成員。2.1.2對(duì)象的定義和使用classMY_CIRCLE{public: intx,y,radius; intID;public: doublegetArea(); MY_CIRCLE(); virtual~MY_CIRCLE();};doubleMY_CIRCLE::getArea(){return3.14*radius*radius;}MY_CIRCLE::MY_CIRCLE(){}MY_CIRCLE::~MY_CIRCLE(){}main(){MY_CIRCLEC1;C1.ID=20;C1.radius=10;cout<<"圓"<<C1.ID<<"的面積:"<<C1.getArea()<<endl;}構(gòu)造函數(shù)

C++規(guī)定:構(gòu)造函數(shù)必須與相應(yīng)的類同名構(gòu)造函數(shù)不能指定函數(shù)返回值的類型,也不能指定為void類型。classMY_CIRCLE{public: intx,y,radius; intID;public: doublegetArea(); MY_CIRCLE(); virtual~MY_CIRCLE();};doubleMY_CIRCLE::getArea(){return3.14*radius*radius;}MY_CIRCLE::MY_CIRCLE(){}MY_CIRCLE::~MY_CIRCLE(){}析構(gòu)函數(shù)析構(gòu)函數(shù)也要與相應(yīng)的類同名,并在名稱前面加上一個(gè)“~”符號(hào)。析構(gòu)函數(shù)只有在兩種情況下才會(huì)被自動(dòng)調(diào)用:(1)當(dāng)對(duì)象定義在一個(gè)函數(shù)體中,該函數(shù)調(diào)用結(jié)束后,析構(gòu)函數(shù)被自動(dòng)調(diào)用。(2)用new為對(duì)象分配動(dòng)態(tài)內(nèi)存后,當(dāng)使用delete釋放對(duì)象時(shí),析構(gòu)函數(shù)被自動(dòng)調(diào)用。classMY_CIRCLE{……public:

virtual~MY_CIRCLE();};MY_CIRCLE::~MY_CIRCLE(){}更好的封裝classMY_CIRCLE{private: intx,y,radius;public: intID; doublegetArea(); voidsetradius(intr);

MY_CIRCLE(); virtual~MY_CIRCLE();};doubleMY_CIRCLE::getArea(){return3.14*radius*radius;}voidMY_CIRCLE::setradius(intr){radius=r;}MY_CIRCLE::MY_CIRCLE(){x=10;y=20;}MY_CIRCLE::~MY_CIRCLE(){}main(){ MY_CIRCLEC1; C1.ID=20;C1.setradius(10); cout<<"圓"<<C1.ID<<"的面積是:"<<C1.getArea()<<e

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論