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

下載本文檔

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

文檔簡介

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

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

類一般分為聲明部分和實(shí)現(xiàn)部分。類體C++中定義類的一般格式如下:class<類名>{ private: [<私有數(shù)據(jù)和函數(shù)>] public: [<公有數(shù)據(jù)和函數(shù)>]};<各個成員函數(shù)的實(shí)現(xiàn)>class是定義類的關(guān)鍵字,class的后面是用戶定義的類名。類中的數(shù)據(jù)和函數(shù)是類的成員,稱為數(shù)據(jù)成員和成員函數(shù)。2.1.2類的定義定義類時還應(yīng)注意:(1)在“public:”或“private:”后面成員都是公有或私有的,直到下一個“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)用程序框架中都是將各個類以.h和同名的.cpp文件來組織的。2.1.2類的定義MY_CIRCLE類定義了一個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對象的定義

一個類定義后,就可以定義該類的對象,如下面的格式:<類名><對象名列表>類名是用戶已定義過的類的標(biāo)識符,對象名可以有一個或多個,多個時要用逗號分隔。MY_CIRCLEc1,*c2;一個對象就是該對象的類所定義的成員,引用時可用下列方式:<對象名>.<成員名>(<參數(shù)表>)前者表示引用數(shù)據(jù)成員,后者表示引用成員函數(shù)。“.”是成員運(yùn)算符c1.x,c1.GetArea();對于指針對象的成員引用可用下列方式:<對象指針名>-><成員名>(<參數(shù)表>)c2->GetArea();c2->ID“->”也是一個成員運(yùn)算符,與“.”運(yùn)算符的區(qū)別是:“->”用來訪問指針對象的成員,而“.”用來訪問一般對象的成員。2.1.2對象的定義和使用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òu)函數(shù)只有在兩種情況下才會被自動調(diào)用:(1)當(dāng)對象定義在一個函數(shù)體中,該函數(shù)調(diào)用結(jié)束后,析構(gòu)函數(shù)被自動調(diào)用。(2)用new為對象分配動態(tài)內(nèi)存后,當(dāng)使用delete釋放對象時,析構(gòu)函數(shù)被自動調(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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

提交評論