版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序開(kāi)發(fā)基礎(chǔ)
2.1C++語(yǔ)法基礎(chǔ)
在這一節(jié)中,將介紹C++的特點(diǎn)和基本功能。主要包括:
C++中的語(yǔ)法、類、對(duì)象、類的繼承和多態(tài)性以及C++中的輸入/輸出流。2024/11/11VisualC++程序設(shè)計(jì)教程22.1.1C++程序的構(gòu)成一個(gè)標(biāo)準(zhǔn)的C++程序由三個(gè)部分構(gòu)成:預(yù)處理命令
預(yù)處理命令位于行首,以符號(hào)#開(kāi)始,C++提供的預(yù)處理命令有宏定義命令、文件包含命令和條件編譯命令三種。
函數(shù)
函數(shù)是根據(jù)進(jìn)去的信息(輸入)和產(chǎn)生的東西(輸出結(jié)果)所定義的一個(gè)黑盒。C++程序由若干個(gè)函數(shù)構(gòu)成,有且只有一個(gè)主函數(shù)main()。函數(shù)分為庫(kù)函數(shù)和自定義函數(shù)兩大類。2024/11/11VisualC++程序設(shè)計(jì)教程3C++程序的構(gòu)成(續(xù))程序語(yǔ)句 程序語(yǔ)句是程序的基本組成部分,一個(gè)語(yǔ)句是給計(jì)算機(jī)的一條完整的指令。在
C++里,一個(gè)語(yǔ)句是在結(jié)尾處用分號(hào)結(jié)束的。C++提供了說(shuō)明語(yǔ)句、賦值語(yǔ)句、程序控制語(yǔ)句、復(fù)合語(yǔ)句及空語(yǔ)句等。2024/11/11VisualC++程序設(shè)計(jì)教程42.1.2C++的語(yǔ)言基礎(chǔ)
C++的詞法規(guī)則:關(guān)鍵字
標(biāo)識(shí)符
語(yǔ)言符號(hào)
注釋符
C++的數(shù)據(jù)類型:基本類型:包括整型(int)、浮點(diǎn)型(float)、字符型(char)和邏輯型(bool)2024/11/11VisualC++程序設(shè)計(jì)教程5C++的數(shù)據(jù)類型(續(xù))
空類型:void類型
構(gòu)造類型:常見(jiàn)的構(gòu)造類型有數(shù)組、結(jié)構(gòu)體、聯(lián)合體和枚舉。
指針類型:指針類型變量用于存儲(chǔ)另一變量的地址,而不能用來(lái)存放基本類型的數(shù)據(jù)。它在內(nèi)存中占據(jù)一個(gè)存儲(chǔ)單元。
類類型:類是體現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)的最基本特征,也是體現(xiàn)C++與C最大的不同之處。類也是一個(gè)數(shù)據(jù)類型,它定義的是一種對(duì)象類型,由數(shù)據(jù)和方法組成,描述了屬于該類型的所有對(duì)象的性質(zhì)。
2024/11/11VisualC++程序設(shè)計(jì)教程62.1.3C++中的類與對(duì)象
對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位,它具有自己的靜態(tài)特征和動(dòng)態(tài)特征。靜態(tài)特征是可以用某種數(shù)據(jù)來(lái)描述的特征。動(dòng)態(tài)特征即對(duì)象所表現(xiàn)的行為或?qū)ο笏哂械墓δ?。類是面向?qū)ο笳Z(yǔ)言必須提供的用戶定義的數(shù)據(jù)類型,它將具有相同狀態(tài)、操作和訪問(wèn)機(jī)制,多個(gè)對(duì)象抽象成為一個(gè)對(duì)象類。
2024/11/11VisualC++程序設(shè)計(jì)教程7C++中的類與對(duì)象(續(xù)1)類的一般定義格式如下:
class
<類名>{private:
<私有數(shù)據(jù)成員和成員函數(shù)>;protected:
<保護(hù)數(shù)據(jù)成員和成員函數(shù)>;public:
<公有數(shù)據(jù)成員和成員函數(shù)>;}
<各個(gè)成員函數(shù)的實(shí)現(xiàn)>;
2024/11/11VisualC++程序設(shè)計(jì)教程8C++中的類與對(duì)象(續(xù)2)
定義類的函數(shù)成員的格式如下:
返回類型
類名::成員函數(shù)名(參數(shù)列表){函數(shù)體}對(duì)象的定義格式如下:
<類名><對(duì)象名表>;
2024/11/11VisualC++程序設(shè)計(jì)教程9C++中的類與對(duì)象(續(xù)3)對(duì)象的成員(一個(gè)對(duì)象的成員是該對(duì)象的類所定義的成員)表示如下:<對(duì)象名>.<成員名>
或者:<對(duì)象名>-><成員名>2024/11/11VisualC++程序設(shè)計(jì)教程102.1.4類的繼承和多態(tài)性
繼承是面向?qū)ο笤O(shè)計(jì)的基本特征之一,是從已有的類基礎(chǔ)上建立新類。通過(guò)C++語(yǔ)言中的繼承機(jī)制,一個(gè)新類既可以共享另一個(gè)類的操作和數(shù)據(jù),也可以在新類中定義已有類中沒(méi)有的成員。C++的另一個(gè)重要的特征是支持多態(tài)。所謂多態(tài)性是指當(dāng)不同的對(duì)象收到相同的消息時(shí),產(chǎn)生不同的動(dòng)作。2024/11/11VisualC++程序設(shè)計(jì)教程11繼承如在定義類B時(shí),如果繼承類A,就會(huì)自動(dòng)得到類A的操作和數(shù)據(jù)屬性,使得程序員需定義類A中所沒(méi)有的新成分即可完成在類B的定義,這樣稱類B繼承了類A,類A派生了類B。這種機(jī)制稱為繼承。稱類A為基類或父類,類B為派生類或子類。繼承的定義格式如下:
class<派生類名>:<繼承方式><基類名>2024/11/11VisualC++程序設(shè)計(jì)教程12繼承(續(xù))<繼承方式>有三種關(guān)鍵字給予表示:l
public:公有繼承,其特點(diǎn)是基類的公有成員和保護(hù)成員作為派生類的成員時(shí),它們都保持原有的狀態(tài),而基類的私有成員仍然是私有的。lprotected:保護(hù)繼承,其特點(diǎn)是基類的所有公有成員和保護(hù)成員都成為派生類的保護(hù)成員,并且只能被它的派生類成員函數(shù)或友元訪問(wèn),基類的私有成員仍然是私有的。
l
private:私有繼承,其特點(diǎn)是基類的公有成員和保護(hù)成員作為派生類的私有成員,并且不能被這個(gè)派生類的子類訪問(wèn)。
2024/11/11VisualC++程序設(shè)計(jì)教程13繼承實(shí)例//基類classCBase{public:
voidFuncA(void);
voidFuncB(void);};//派生類classCDerive:publicCBase{public:
voidFuncC(void);
voidFuncD(void);};//實(shí)例主程序main(){CDeriveb;
//CDerive的一個(gè)對(duì)象
b.FuncA();//CDerive從CBase繼承了函數(shù)FuncAb.FuncB();//CDerive從CBase繼承了函數(shù)FuncBb.FuncC();
b.FuncD();}2024/11/11VisualC++程序設(shè)計(jì)教程14多態(tài) C++的多態(tài)性具體體現(xiàn)在運(yùn)行和編譯兩個(gè)方面:在程序運(yùn)行時(shí)的多態(tài)性通過(guò)繼承和虛函數(shù)來(lái)體現(xiàn)。在程序編譯時(shí)多態(tài)性體現(xiàn)在函數(shù)和運(yùn)算符的重載上。
2024/11/11VisualC++程序設(shè)計(jì)教程15多態(tài)實(shí)例classCBase{public:
virtualvoidFuncA(void){cout<<”ThisisCBase::FuncA\n”}//用關(guān)鍵字virtual聲明一個(gè)虛函數(shù)};voidTest(CBase*a){a->FuncA();}classCDeriveA:publicCBase{public:
virtualvoidFuncA(void){cout<<”ThisisCDeriveA::FuncA\n”}};classCDeriveB:publicCBase{public:
virtualvoidFuncA(void){cout<<”ThisisCDeriveB::FuncA\n”}};2024/11/11VisualC++程序設(shè)計(jì)教程16多態(tài)實(shí)例(續(xù))//主程序main(){CBaseb;//CBase的一個(gè)對(duì)象
CDeriveAobjectA;//CDeriveA的一個(gè)對(duì)象
CDeriveBobjectB;//CDeriveB的一個(gè)對(duì)象
Test(&b);
Test(&objectA);
Test(&objectB);}//輸出結(jié)果ThisisCBase::FuncAThisisCDeriveA::FuncAThisisCDeriveB::FuncA2024/11/11VisualC++程序設(shè)計(jì)教程172.1.5C++中的輸入/輸出流
例:cout<<”Enteryourname:”;cin>>name;cout<<”Yournameis:”<<name<<’\n’; 第一條語(yǔ)句用到了標(biāo)準(zhǔn)輸出流cout和運(yùn)算符<<,<<稱為流插入運(yùn)算符。第二條語(yǔ)句用到了標(biāo)準(zhǔn)輸入cin和運(yùn)算符>>,>>稱為流提取運(yùn)算符。與C中的printf和scanf不同的是,流插入運(yùn)算符和流提取運(yùn)算符不需要指示輸出/輸入數(shù)據(jù)類型的格式,控制串、轉(zhuǎn)換說(shuō)明符和運(yùn)算符能自動(dòng)識(shí)別要用的類型。
2024/11/11VisualC++程序設(shè)計(jì)教程18C++中的輸入/輸出流(續(xù))
用C++風(fēng)格的面向流的輸入/輸出可以使得程序具有更好的可讀性,并且能減少出錯(cuò)的可能。注意:C++程序必須包含頭文件iostream.h后才能使用輸入/輸出流,這一文件包含了所有輸入/輸出流操作所需的基本信息。
2024/11/11VisualC++程序設(shè)計(jì)教程192.2AppWizard的使用
AppWizard是一個(gè)基于用戶的選擇創(chuàng)建MFC項(xiàng)目的一個(gè)工具。AppWizard創(chuàng)建作為一個(gè)框架項(xiàng)目所需要的所有源文件,這個(gè)框架項(xiàng)目是應(yīng)用程序的起始點(diǎn)。可以用AppWizard創(chuàng)建單文檔、多文檔或者基于對(duì)話框的應(yīng)用程序。
2024/11/11VisualC++程序設(shè)計(jì)教程20AppWizard第一步
AppWizard第一步:指定應(yīng)用程序風(fēng)格AppWizard對(duì)于需要?jiǎng)?chuàng)建應(yīng)用程序的類型提供了三種選項(xiàng):
SingleDocumentInterface(SDI,單文檔界面)MultipleDocumentInterface(MDI,多文檔界面)Dialogbased(基于對(duì)話框)
2024/11/11VisualC++程序設(shè)計(jì)教程21AppWizard第一步(續(xù))
在AppWizard第一步的對(duì)話框中還可指定一個(gè)特殊的選項(xiàng):
Document/ViewArchitectureSupport復(fù)選框
大多數(shù)情況下,可以讓它保持為缺省(選中)狀態(tài)。如果選中,表示應(yīng)用程序采用文檔-視圖結(jié)構(gòu)。這種結(jié)構(gòu)將文檔數(shù)據(jù)的存取和顯示分離了出來(lái)。采用文檔-視圖結(jié)構(gòu)可以更清晰、方便地實(shí)現(xiàn)多種功能。
2024/11/11VisualC++程序設(shè)計(jì)教程22AppWizard第二步
AppWizard第二步:指定數(shù)據(jù)庫(kù)支持選項(xiàng)
如果沒(méi)有寫(xiě)數(shù)據(jù)庫(kù)的應(yīng)用程序,選擇None;如果不想從CFormView派生視類,也不想有Record菜單,選擇Headerfilesonly,即只用到ODBC必需的一些頭文件;如果想從CFormView派生視類,并且有Record菜單,但不必序列化(Serialize)一個(gè)文檔,選擇Databaseviewwithoutfilesupport,這樣程序就可以通過(guò)CRecordset來(lái)修改數(shù)據(jù)庫(kù)的元組(記錄);如果想要求數(shù)據(jù)庫(kù)的支持,同時(shí)要序列化文檔,選擇Databaseviewwithfilesupport。2024/11/11VisualC++程序設(shè)計(jì)教程23AppWizard第三步
AppWizard第三步:設(shè)置COM選項(xiàng)
如果不想編寫(xiě)ActiveX(或先前的OLE,ActiveX和OLE技術(shù)被統(tǒng)稱為復(fù)合文檔技術(shù))應(yīng)用程序,選擇None;如果要求應(yīng)用程序能嵌入或連接的ActiveX對(duì)象,如Word文檔或Excel中的工作表,選擇Container;如果希望應(yīng)用程序能為其它應(yīng)用程序提供文檔服務(wù),且應(yīng)用程序不必作為一單獨(dú)的應(yīng)用程序,選擇Mini-server;2024/11/11VisualC++程序設(shè)計(jì)教程24AppWizard第三步(續(xù))如果希望應(yīng)用程序作為一個(gè)可以獨(dú)立的運(yùn)行程序,選擇Full-server;如果希望應(yīng)用程序既能包含其它應(yīng)用程序中的對(duì)象,又能為其它應(yīng)用程序提供對(duì)象,則選擇Bothcontainerandserver2024/11/11VisualC++程序設(shè)計(jì)教程25AppWizard第四步AppWizard第四步:決定窗口的樣式DockingToolbar(預(yù)設(shè)工具條)
Initialstatusbar(初始狀態(tài)欄)
Printingandprintpreview(打印和打印預(yù)覽)
3DControls(三維控件)
Context-sensitiveHelp(上下文相關(guān)幫助)
MAPI(消息API)
WindowsSockets(Windows套接字)
2024/11/11VisualC++程序設(shè)計(jì)教程26
AppWizard第五步:窗口風(fēng)格、注釋和類型
如果希望工程具有MFC標(biāo)準(zhǔn)風(fēng)格,則應(yīng)用選擇MFCStandard;
如果希望工程具有瀏覽風(fēng)格,即擁有切分窗口,左邊窗口顯示樹(shù)形視圖,右邊窗口顯示列表視圖,則選擇WindowsExplorer; 如果希望在源代碼中產(chǎn)生注釋,則選擇Yes,please,反之,選擇No,thankyou。
AppWizard第五步
2024/11/11VisualC++程序設(shè)計(jì)教程27AppWizard第六步
AppWizard第六步:改變視圖的基類
可以修改缺省類名、基類、頭文件或?qū)崿F(xiàn)文件名。 選擇不同的應(yīng)用程序視圖基類,應(yīng)用程序工作的方式也會(huì)相應(yīng)地改變。 單擊Finish按鈕,就完成了AppWizard提供的所有選項(xiàng)。
2024/11/11VisualC++程序設(shè)計(jì)教程282.3一個(gè)簡(jiǎn)單的應(yīng)用程序
創(chuàng)建過(guò)程:在VisualC++6.0的啟動(dòng)界面中,選擇“File|New”,在彈出的“New”對(duì)話框中單擊“Projects”選項(xiàng)卡。選擇“MFCAppWizard(exe)”,在“Location”編輯框中輸入要建立的工程所在的目錄。在右上方的“Projectname”編輯框中輸入工程名稱Eg2_1,單擊OK按鈕,彈出MFCAppWizard向?qū)?duì)話框。在第一步中選擇Singledocument,建立一個(gè)單文檔界面應(yīng)用程序SDI。取其默認(rèn)值,直到第六步結(jié)束。
2024/11/11VisualC++程序設(shè)計(jì)教程292.3.2編譯、鏈接并運(yùn)行程序
選擇Build|BuildEg2_1.exe菜單項(xiàng)或者按F7鍵進(jìn)行編譯、鏈接。
選擇Build|ExecuteEg2_1.exe菜單項(xiàng)或者按Ctrl+F5鍵,可以看到運(yùn)行結(jié)果。2024/11/11VisualC++程序設(shè)計(jì)教程302.4程序結(jié)構(gòu)剖析
MFCAppWizard一共生成了五個(gè)類:CAboutDlgCEg2_1AppCEg2_1DocCEg2_1ViewCMainFrame2024/11/11VisualC++程序設(shè)計(jì)教程31分析五個(gè)類CAboutDlg類的基類是CDialog。可以通過(guò)雙擊ClassView中CAboutDlg來(lái)查看,這時(shí)右邊的文本編輯器中出現(xiàn)CDboutDlg的類定義。它在程序中的表現(xiàn)就是選擇主菜單中“幫助”下的“關(guān)于Eg2_1..”后出現(xiàn)的對(duì)話框。
CEg2_1App類代表整個(gè)應(yīng)用程序,它由CWinApp派生。
2024/11/11VisualC++程序設(shè)計(jì)教程32分析五個(gè)類(續(xù))
在MFC中,一個(gè)應(yīng)用程序的真正的入口點(diǎn)是AfxWinMain(),但它并不在工程中的任何一個(gè)文件中存在,僅在程序編譯鏈接時(shí)加入工程中,在AfxWinMain()中調(diào)用了MFC應(yīng)用程序的InitInstance()函數(shù)進(jìn)行初始化,然后進(jìn)入MFC的消息循環(huán),這樣程序就開(kāi)始運(yùn)行起來(lái)。所以可以認(rèn)為InitInstance()是程序員能夠修改的最先被執(zhí)行的函數(shù)。
2024/11/11VisualC++程序設(shè)計(jì)教程33分析五個(gè)類(續(xù))CEg2_1Doc和CEg2_1View類兩個(gè)類組成了MFC著名的Doc/View體系結(jié)構(gòu)。文檔負(fù)責(zé)存儲(chǔ)處理各種數(shù)據(jù),并負(fù)責(zé)文檔內(nèi)容的系列化,視圖負(fù)責(zé)顯示文檔內(nèi)容。SDI應(yīng)用程序的Doc/View模型比較簡(jiǎn)單,應(yīng)用程序可以擁有多個(gè)文檔模板,但每次只能有一個(gè)活動(dòng)模板,只有一個(gè)視圖。
2024/11/11VisualC++程序設(shè)計(jì)教程34分析五個(gè)類(續(xù))CMainFrame類即主框架類。CMainFrame是從CFrameWnd中派生出來(lái)的。AppWizard在CMainFrame類中主要生成了兩個(gè)函數(shù),即:重載了基類的PreCreateWindow()函數(shù)建立了響應(yīng)WM_CREATE的消息處理函數(shù)OnCreate()。 此外,CMainFrame類中還內(nèi)嵌了工具欄類的對(duì)象m_wndToolBar和狀態(tài)欄類的對(duì)象m_wndStatusBar。
2
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省聊城市東昌教育集團(tuán)2025-2026學(xué)年上學(xué)期九年級(jí)期末數(shù)學(xué)模擬檢測(cè)試題(含答案)
- 安徽省蚌埠市部分學(xué)校2026屆九年級(jí)上學(xué)期期末考試英語(yǔ)試卷(含答案、無(wú)聽(tīng)力原文及音頻)
- 飛機(jī)的基礎(chǔ)知識(shí)課件
- 2026山東事業(yè)單位統(tǒng)考省煤田地質(zhì)局第五勘探隊(duì)招聘初級(jí)綜合類崗位3人考試參考試題及答案解析
- 2026年唐山市豐南區(qū)新合供銷合作社管理有限公司招聘審計(jì)人員1名備考考試試題及答案解析
- 2026西南大學(xué)附中招聘?jìng)淇伎荚囶}庫(kù)及答案解析
- 2026河南洛陽(yáng)澗西區(qū)招聘25名備考考試題庫(kù)及答案解析
- 2026西安未央?yún)^(qū)漢城社區(qū)衛(wèi)生服務(wù)中心招聘(19人)備考考試試題及答案解析
- 2026浙江麗水市云和縣民政和人力資源社會(huì)保障局招聘編外用工1人參考考試題庫(kù)及答案解析
- 2026年福建省煙草專賣局第二批招聘(127人)參考考試題庫(kù)及答案解析
- 廣西對(duì)口升專職業(yè)技能測(cè)試答案
- 冶煉煙氣制酸工藝解析
- 運(yùn)輸公司安全生產(chǎn)培訓(xùn)計(jì)劃
- 兒童組織細(xì)胞壞死性淋巴結(jié)炎診斷與治療專家共識(shí)解讀 2
- T∕ZZB 0623-2018 有機(jī)溶劑型指甲油
- 2025體彩知識(shí)考試題及答案
- 機(jī)械企業(yè)安全生產(chǎn)風(fēng)險(xiǎn)評(píng)估報(bào)告
- 馬匹性能智能評(píng)估-洞察及研究
- 中職班會(huì)課主題課件
- 政務(wù)服務(wù)大廳安全隱患排查
- 土建資料管理課件
評(píng)論
0/150
提交評(píng)論