VisualC++教程ppt課件_第1章[1].ppt_第1頁
VisualC++教程ppt課件_第1章[1].ppt_第2頁
VisualC++教程ppt課件_第1章[1].ppt_第3頁
VisualC++教程ppt課件_第1章[1].ppt_第4頁
VisualC++教程ppt課件_第1章[1].ppt_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第1章 C+基礎(chǔ),1.1 簡單C+程序,例Ex_Simple 一個簡單的C+程序 #include void main() double r, area; / 聲明變量 coutr; / 從鍵盤上輸入r的值 area = 3.14159 * r * r; / 計算面積 cout“圓的面積為:”area“n”;/ 輸出面積 ,該程序經(jīng)編譯、連接、運(yùn)行后,屏幕上顯示: 輸入圓的半徑: 此時等待用戶輸入,當(dāng)輸入10并按Enter鍵后,屏幕顯示: 圓的面積為:314.159 Press any key to continue 這就是程序運(yùn)行的結(jié)果。,1.1 簡單C+程序,例Ex_Root 一個求解一元

2、二次方程的C+程序 #include #include int GetRoot(float a, float b, float c, double *root);/* 聲明一個全局函數(shù) */ void main() float a = 2.0, b = 6.0, c = 3.0; / 定義并初始化變量 double root2; int n = GetRoot(a, b, c, roo / 調(diào)用函數(shù) if (n1) cout方程無根!; else cout方程有 n 根:n; for (int i=0; in; i+) / 循環(huán)輸出所有的根 cout根i+1: rootit; coutendl

3、; ,1.1 簡單C+程序,/ 求一元二次方程的根,函數(shù)返回根的個數(shù) int GetRoot(float a, float b, float c, double *root) double delta, deltasqrt; delta = b*b - 4.0 * a * c; if (delta0.0) return 0; / 無根 deltasqrt = sqrt(delta); if (a!=0.0) root0 = (-b + deltasqrt)/(2.0 * a); root1 = (-b - deltasqrt)/(2.0 * a); else if (b!=0.0) root0

4、 = root1 = -c/b; elsereturn 0; if (root0 = root1) return 1; else return 2 方程有 2 根: 根1: -0.633975 根2: -2.36603,1.2.1 從結(jié)構(gòu)到類,例Ex_StructToClass 從結(jié)構(gòu)到類的示例 #include struct STUSCORE charstrName12;/ 姓名 charstrStuNO9;/ 學(xué)號 floatfScore3;/ 三門課程成績 ; float GetAverage(STUSCORE one) / 計算平均成績 return (float)(one.fScor

5、e0 + one.fScore1 + one.fScore2)/3.0); void main() STUSCORE one=LiMing, 21020501, 80,90,65; coutone.strName 的平均成績?yōu)椋?GetAverage(one)n; 運(yùn)行結(jié)果如下: LiMing 的平均成績?yōu)椋?78.3333,1.2.2 類的定義,類一般分為聲明部分和實現(xiàn)部分。,類體,C+中定義類的一般格式如下: class , private:, public: ; ,class是定義類的關(guān)鍵字,class的后面是用戶定義的類名,用 大寫的C字母開始的標(biāo)識符作為類名,C用來表示類(Class

6、),以與對象、函數(shù)及其他數(shù)據(jù)類型相區(qū)別。類中的數(shù)據(jù)和函數(shù)是類的成員,稱為數(shù)據(jù)成員和成員函數(shù)。,1.2.2 類的定義,CStuScore類包含了SetScore和GetAverage成員函數(shù),分別用來輸入成績和返回計算后的平均成績:,class CStuScore public:/ 公有類型聲明 char strName12;/ 姓名 char strStuNO9;/ 學(xué)號 void SetScore(float s0, / 成員函數(shù):設(shè)置三門課成績 fScore0 = s0;fScore1 = s1; fScore2 = s2; float GetAverage(); private: / 私

7、有類型聲明 float fScore3; / 三門課程成績 ; / 注意分號不能省略 float CStuScore:GetAverage() return (float)(fScore0 + fScore1 + fScore2)/3.0); 類CStuScore中,成員函數(shù)SetScore是在類體中定義,GetAverage是類的外 部定義,注意兩者的區(qū)別。,1.2.2 類的定義,定義類時還應(yīng)注意:,(1) 在“public:”或“private:”后面成員都是公有或私有的,直到下一個“public:”或“private:”出現(xiàn)為止。 (2)關(guān)鍵字public和private在類中出現(xiàn)多次,

8、前后的順序沒有關(guān)系。 (3)除了public和private外,關(guān)鍵字protected也可修飾成員的類型。 (4)數(shù)據(jù)成員的類型可以是任意的,包含整型、浮點(diǎn)型、字符型、數(shù)組、指針等。 (5)將類單獨(dú)存放在一個文件中或?qū)㈩惖穆暶鞣旁?h文件中而將成員函數(shù)的實現(xiàn)放在與.h文件同名的.cpp文件中。 Visual C+ 6.0為用戶創(chuàng)建的應(yīng)用程序框架中都是將各個類以.h和同名的.cpp文件來組織的。,1.2.3 對象的定義,一個類定義后,就可以定義該類的對象,如下面的格式: 類名是用戶已定義過的類的標(biāo)識符,對象名可以有一個或多個,多個時要用 逗號分隔。 CStuScore one, *two, t

9、hree2;,一個對象就是該對象的類所定義的成員,引用(訪問)時可用下列方式: . .() 前者表示引用數(shù)據(jù)成員,后者表示引用成員函數(shù)?!?”是成員運(yùn)算符, 用引用對象成員。 one.strName, three0.GetAverage(); 對于指針對象的成員引用可用下列方式: - -() “-”也是一個成員運(yùn)算符,與“.”運(yùn)算符的區(qū)別是:“-”用來訪問指針對象的成員,而“.”用來訪問一般對象的成員。下面的兩種表示是等價的: - (*). 成員函數(shù)也適用,,1.3.1 構(gòu)造函數(shù),C+規(guī)定:構(gòu)造函數(shù)必須與相應(yīng)的類同名構(gòu)造函數(shù)不能指定函 數(shù)返回值的類型,也不能指定為void類型。,class C

10、StuScore public: CStuScore(char str12) / 第一個構(gòu)造函數(shù) strcpy(strName, str); CStuScore(char str12, char strNO9) / 第二個構(gòu)造函數(shù) strcpy(strName, str); strcpy(strStuNO, strNO); charstrName12;/ 姓名 charstrStuNO9;/ 學(xué)號class CM . ,1.3.1 構(gòu)造函數(shù),需要說明的是: (1) 程序中的strcpy是C+的一個庫函數(shù),用來復(fù)制字符串,使用時需要頭文件string.h。 (2) 在類定義時,如果沒有定義任何構(gòu)

11、造函數(shù),則編譯器自動為類生成一個不帶任何參數(shù)的默認(rèn)構(gòu)造函數(shù)。對于CStuScore類來說,默認(rèn)構(gòu)造函數(shù)的形式如下: CStuScore( ) / 默認(rèn)構(gòu)造函數(shù)的形式 (3) 由于構(gòu)造函數(shù)的參數(shù)只能在定義對象時指定,因此有: CStuScore oOne(LiMing); 它是自動調(diào)用第一個構(gòu)造函數(shù),使得strName內(nèi)容為“LiMing”。若有: CStuScore oTwo;,1.3.2 析構(gòu)函數(shù),析構(gòu)函數(shù)也要與相應(yīng)的類同名,并在名稱前面加上一個“”符號。,class CStuScore public: . CStuScore ( ) / 析構(gòu)函數(shù) . ,析構(gòu)函數(shù)只有在兩種情況下才會被自動調(diào)

12、用: (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)用。,1.3.3 對象成員初始化,為了能對這些對象成員進(jìn)行初始化,C+允許采用這樣的構(gòu)造函數(shù)定義格式: :(形參表):對象1(參數(shù)表), 對象2(參數(shù)表), , 對象n(參數(shù)表),需要說明的是:,(1) 類的成員對象必須初始化,但不能將成員對象直接在構(gòu)造函數(shù)體內(nèi)進(jìn)行初始化 。,(2) 對象成員初始化時,必須有相應(yīng)的構(gòu)造函數(shù),且多個對象成員的構(gòu)造次序不是按初始化成員列表的順序,而是按各類聲明的先后次序進(jìn)行的。,(3) 成員對象初始化也

13、可在類構(gòu)造函數(shù)定義時進(jìn)行。,(4) 事實上,成員初始化列表也可用于類中的普通數(shù)據(jù)成員的初始化。,1.3.4 常類型,常類型是指使用類型修飾符const說明的類型。 常對象 常對象是指對象常量,定義格式如下: const 定義常對象時,同樣要進(jìn)行初始化,并且該對象不能再被改變,修飾符const可以放在類名后面,也可以放在類名前面。,常成員函數(shù) 使用const關(guān)鍵字進(jìn)行聲明的成員函數(shù),稱為常成員函數(shù)。只有常成員函數(shù)才有資格操作常量或常對象。 常成員函數(shù)說明格式如下: () const;,1.3.4 常類型,常數(shù)據(jù)成員 類型修飾符const不僅可以說明成員函數(shù),也可以說明數(shù)據(jù)成員。 由于const類

14、型對象必須被初始化,并且不能被改變。在類中聲明const數(shù)據(jù)成員后,只能通過構(gòu)造函數(shù)初始化方式來對常數(shù)據(jù)成員初始化.,所謂“引用”,實質(zhì)上是給一個已定義的變量起 一個別名,系統(tǒng)不會為引用類型變量分配內(nèi)存空間, 只是使引用類型變量與其相關(guān)聯(lián)的變量使用同一 個內(nèi)存空間。,1.3.5 this指針,例Ex_This this指針的使用,#include class COne public: COne() x = y = 0; COne(int a, int b) x = a; y = b; void copy(COne ,private: int x, y; ; void COne:copy(COn

15、e ,1.3.6 靜態(tài)成員,靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。,靜態(tài)數(shù)據(jù)成員 靜態(tài)數(shù)所成員是同一個類中所有對象共享的成,而不是某一對象的成員。 靜態(tài)數(shù)據(jù)成員始化須在類的外部進(jìn)行,與一般數(shù)據(jù)成員初始化不同,它的格式如下: :=,2. 靜態(tài)成員函數(shù) 靜態(tài)成員函數(shù)和靜態(tài)數(shù)據(jù)成員一樣,它們都屬于類的靜態(tài)成員,但它們都不是對象的成員。,1.4.1 單繼承,1. 公有繼承(public) 公有繼承的特點(diǎn)是基類的公有成員和保護(hù)成員作為派生類 的成員時,它們都保持原有的狀態(tài),而基類的私有成員仍 然是私有的。,2. 私有繼承(private) 私有繼承的特點(diǎn)是基類的公有成員和保護(hù)成員都作為派生 類的私有成員,并且不能

16、被這個派生類的子類所訪問。,3. 保護(hù)繼承(protected) 保護(hù)繼承的特點(diǎn)是基類的所有公有成員和保護(hù)成員都成為 派生類的保護(hù)成員,并且只能被它的派生類成員函數(shù)或友 元訪問,基類的私有成員仍然是私有的。,1.4.2 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),派生類對象在建立時,先執(zhí)行基類的構(gòu)造函數(shù),然后執(zhí)行派生類的構(gòu)造函數(shù)。 在對派生類進(jìn)行初始化時,需要對其基類設(shè)置初值,可按下列格式進(jìn)行: (總參表):(參數(shù)表1), (參數(shù)表2), (參數(shù)表n), 對象成員1(對象成員參數(shù)表1), 對象成員 2(對象成員參數(shù)表2), , 對象成員n(對象成員參數(shù)表n) .,1.4.3 多繼承,多繼承下派生類的定義是按下

17、面的格式: class : , ,. ; 其中的繼承方式還是前面的三種:public、private和protected。 例如: class A . class B . class C:public A,private B .,1.5.1 虛函數(shù),例Ex_VirtualFunc 虛函數(shù)的使用 #include class CShape public: virtual float area() / 將area定義成虛函數(shù) return 0.0; ; class CTriangle:public CShape public: CTriangle(float h, float w) H=h;W=w

18、; float area() return (float)(H * W * 0.5); private: float H, W; ;,private: float H, W; ; class CCircle:public CShape public: CCircle(float r) R=r; float area() return (float)(3.14159265 * R * R); private: float R; ; void main() CShape *s2; s0 = new CTriangle(3,4); coutarea()area()endl; ,習(xí) 題,定義一個描述學(xué)

19、生基本情況的類,數(shù)據(jù)成員包括姓名,學(xué)C+英語和數(shù)學(xué)成績,成員函數(shù)包括輸出數(shù)據(jù)、置姓名和學(xué)號、置 三門課的成績,求出總成績和平均成績。 2. 設(shè)有一個描述坐標(biāo)點(diǎn)的CPoint類,其私有變量x和y代表一個點(diǎn) 的x、y坐標(biāo)值。編寫程序?qū)崿F(xiàn)以下功能:利用構(gòu)造函數(shù)傳遞參 數(shù)并設(shè)其默認(rèn)參數(shù)值為60和75,利用成員函數(shù)display輸出這一默認(rèn)的值;利用公有成員函數(shù)setpoint將坐標(biāo)值的修改為(80, 150),利用成員函數(shù)display輸出修改后的坐標(biāo)值。,3. 下面是一個類的測試程序,給出類的定義,構(gòu)造一個完整的程序 執(zhí)行程序時的輸出為; 輸出結(jié)果:200 60 = 140 主函數(shù)為: void main() C

溫馨提示

  • 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

提交評論