臺州學院計算機系面向對象程序設計(C++)_第1頁
臺州學院計算機系面向對象程序設計(C++)_第2頁
臺州學院計算機系面向對象程序設計(C++)_第3頁
臺州學院計算機系面向對象程序設計(C++)_第4頁
臺州學院計算機系面向對象程序設計(C++)_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、臺州學院計算機系面向對象程序設計(C+)1題型:題型:l選擇:選擇:10題題2分,共分,共20分分l填空:填空:10題題2分,共分,共20分分l閱讀程序閱讀程序(4個個):10空空2分,共分,共20分分l問答題:問答題:2題題10分,共分,共20分分l程序設計題:程序設計題:1題,共題,共20分分臺州學院計算機系面向對象程序設計(C+)2 C+的新特性的新特性 簡單的輸入輸出簡單的輸入輸出 帶默認參數的函數帶默認參數的函數/內聯(lián)函數內聯(lián)函數/重載函數重載函數 引用引用 const說明符說明符 動態(tài)分配內存(動態(tài)分配內存(new/delete) 面向對象的三大特性:面向對象的三大特性: 1. 封

2、裝:將有關的數據、操作代碼封裝成類封裝:將有關的數據、操作代碼封裝成類 2. 繼承:保持已有類的特性而構造新類的過程繼承:保持已有類的特性而構造新類的過程 3. 多態(tài):在基類中聲明成員函數為虛函數,根據需要在派多態(tài):在基類中聲明成員函數為虛函數,根據需要在派生類中重新定義與基類同名的成員。用基類指針或基類引生類中重新定義與基類同名的成員。用基類指針或基類引用來訪問各派生類中的同名函數。實現(xiàn)一個接口,多種方用來訪問各派生類中的同名函數。實現(xiàn)一個接口,多種方法法臺州學院計算機系面向對象程序設計(C+)3 面向對象的三個主要特性:封裝,繼承,多態(tài)面向對象的三個主要特性:封裝,繼承,多態(tài) 熟悉熟悉VC

3、集成環(huán)境集成環(huán)境 熟悉簡單熟悉簡單C+程序的基本結構程序的基本結構臺州學院計算機系面向對象程序設計(C+)4 各種數據類型及其在內存中所占用的字節(jié)數各種數據類型及其在內存中所占用的字節(jié)數 變量和常量變量和常量 常量:編譯預處理命令和使用常量:編譯預處理命令和使用const常量說明符常量說明符#define PI 3.14const float = 3.14; 各種運算符和表達式各種運算符和表達式 優(yōu)先級優(yōu)先級/結合律結合律 類型的自動轉換和強制轉換類型的自動轉換和強制轉換 sizeof,自增(減),條件等運算符,自增(減),條件等運算符臺州學院計算機系面向對象程序設計(C+)5 選擇結構選擇結

4、構 循環(huán)結構循環(huán)結構 while do while for break/continue臺州學院計算機系面向對象程序設計(C+)6 函數的定義和調用函數的定義和調用 函數原型說明函數原型說明 帶默認參數的函數帶默認參數的函數 有默認值的參數靠右面,參數傳值順序從左到右有默認值的參數靠右面,參數傳值順序從左到右 重載和默認參數同時使用的歧義性,一般兩者不能同時使用重載和默認參數同時使用的歧義性,一般兩者不能同時使用 內聯(lián)函數內聯(lián)函數 重載函數重載函數臺州學院計算機系面向對象程序設計(C+)7下面參數有默認值的函數,格式正下面參數有默認值的函數,格式正確的是?確的是?1. int add(int

5、a = 0, int b,int c) return a+b+c; 2. int add(int a, int b=0,int c)return a+b+c; 3. int add(int a, int b,int c=0)return a+b+c;4. int add(int a = 0, int b=0,int c)return a+b+c;5. int add(int a = 0, int b,int c=0)return a+b+c;6. int add(int a, int b=0,int c=0)return a+b+c; 臺州學院計算機系面向對象程序設計(C+)81. int a

6、dd (int a, int b); 與與 void add (int a, int b);2. int abb (int a, int b); 與與 void add (int a, int b);3. int add (int a, int b); 與與 int add (int a);4. int add (int a, float b); 與與 int add (float a, int b);5. int add (int a, int b); 與與 float add (float a, float b);6. int add (int a, int b); 與與 int add

7、(int x, int y); 下面是重載函數的是?下面是重載函數的是?臺州學院計算機系面向對象程序設計(C+)9 下面的函數聲明中,為下面的函數聲明中,為void BC(int a,int b); 的重載的重載函數的是函數的是 A. int BC(int a,int b); B. void BC(int a,char b); C. float BC(int a,int b,int c=0); D. void BC(int a,int b=0); 臺州學院計算機系面向對象程序設計(C+)10 作用域作用域 塊塊/局部局部 函數原型函數原型 文件文件 函數函數 類類 存儲類存儲類 自動自動 寄存

8、器寄存器 靜態(tài)靜態(tài) 外部外部重點:重點:局部變量局部變量/ /全局變量全局變量/ /靜態(tài)變量靜態(tài)變量臺州學院計算機系面向對象程序設計(C+)11 數組數組/指針指針/引用的定義及初始化引用的定義及初始化 數組與指針數組與指針 數組與函數數組與函數 數組作為函數的參數數組作為函數的參數 返回值為數組返回值為數組 指針與函數指針與函數 指針作為函數參數指針作為函數參數 返回值為指針返回值為指針 指向函數的指針變量指向函數的指針變量 指針與引用指針與引用 引用作為函數參數引用作為函數參數 返回值為引用返回值為引用臺州學院計算機系面向對象程序設計(C+)12臺州學院計算機系面向對象程序設計(C+)13

9、臺州學院計算機系面向對象程序設計(C+)14臺州學院計算機系面向對象程序設計(C+)15 const與指針與指針 指向常量的指針指向常量的指針: *p是常量,不能修改是常量,不能修改 const float *p; 或者或者 float const *p; 常指針:常指針:p是常量,必須初始化,不能修改是常量,必須初始化,不能修改 float a; float * const p = &a; 指向常量的常指針指向常量的常指針: *p和和p都是常量,不能修改都是常量,不能修改 float a; const float * const p = &a;臺州學院計算機系面向對象程序設計

10、(C+)16 new與與delete類型類型 指針變量指針變量 new 類型類型(初值初值)delete 指針變量指針變量 or delete 指針變量指針變量例如:例如:char *p = new char ; delete p; int *p = new int6; delete p;臺州學院計算機系面向對象程序設計(C+)17 動態(tài)分配內存的優(yōu)點:用變量決定內存大小動態(tài)分配內存的優(yōu)點:用變量決定內存大小char a5 ; / 定義包含定義包含5個元素的數組個元素的數組ad = 5; char arrd; / 錯誤錯誤, 數組大小必須是常量數組大小必須是常量char * p = new c

11、har 5;/ 動態(tài)開辟動態(tài)開辟5個個char內存內存int len = 5; char * p = new char len; / 正確正確臺州學院計算機系面向對象程序設計(C+)18 類的定義及類成員的訪問屬性類的定義及類成員的訪問屬性 public: 類內、類外類內、類外 protected:類內、派生類類內、派生類 private:類內類內類內:類內成員,通常利用成員函數類內:類內成員,通常利用成員函數類外:通過對象名,指向對象的指針,對象的引用類外:通過對象名,指向對象的指針,對象的引用 構造函數和析構函數的定義和特點構造函數和析構函數的定義和特點 拷貝構造函數(拷貝構造函數(參數通

12、常為對象的常引用參數通常為對象的常引用)(深拷貝,淺拷貝)(深拷貝,淺拷貝) 靜態(tài)成員:靜態(tài)數據成員,靜態(tài)成員函數靜態(tài)成員:靜態(tài)數據成員,靜態(tài)成員函數 友元:友元類,友元函數友元:友元類,友元函數 this指針:指向調用成員函數的當前對象指針:指向調用成員函數的當前對象 對象作為函數參數的三種形式對象作為函數參數的三種形式 子對象:對象作為類成員(構造函數調用順序)子對象:對象作為類成員(構造函數調用順序)臺州學院計算機系面向對象程序設計(C+)19 靜態(tài)成員歸本類所有,或者說是歸本類所有對象所公有,并靜態(tài)成員歸本類所有,或者說是歸本類所有對象所公有,并不屬于某一個對象。不屬于某一個對象。 靜

13、態(tài)數據成員不屬于某一個對象。只要它在類中定義了,即使不定義靜態(tài)數據成員不屬于某一個對象。只要它在類中定義了,即使不定義對象,也為靜態(tài)數據成員分配空間,它可以被使用。對象,也為靜態(tài)數據成員分配空間,它可以被使用。 靜態(tài)數據成員只能在類體外初始化。形式為:靜態(tài)數據成員只能在類體外初始化。形式為:數據類型數據類型 類名類名 靜態(tài)數據成員名靜態(tài)數據成員名=初值;初值;例如:例如: int A: num = 0; 靜態(tài)成員函數并不屬于某一對象,它與任何對象都無關,因此它沒有靜態(tài)成員函數并不屬于某一對象,它與任何對象都無關,因此它沒有this指針。指針。 在在C+程序中,靜態(tài)成員函數主要用來訪問靜態(tài)數據成

14、員。程序中,靜態(tài)成員函數主要用來訪問靜態(tài)數據成員。 靜態(tài)數據成員和靜態(tài)成員函數都可以用對象名訪問,也可以用類名訪靜態(tài)數據成員和靜態(tài)成員函數都可以用對象名訪問,也可以用類名訪問問臺州學院計算機系面向對象程序設計(C+)20 友元:用友元:用friend聲明友元,可以訪問與其有好友關聲明友元,可以訪問與其有好友關系的類中的私有成員。系的類中的私有成員。 注意:注意:由于友元函數不是成員函數,沒有由于友元函數不是成員函數,沒有this指針,指針,所以在友元函數內要通過對象名、對象的引用名訪所以在友元函數內要通過對象名、對象的引用名訪問成員。對象或引用一般在友元函數的參數位置上問成員。對象或引用一般在

15、友元函數的參數位置上設置設置臺州學院計算機系面向對象程序設計(C+)21臺州學院計算機系面向對象程序設計(C+)22問題問題1:A aa; A 和和aa哪個占內存空間?占多大?哪個占內存空間?占多大?答:對象占內存,類型不占,所以答:對象占內存,類型不占,所以aa占內存,所占內存,所占內存大小等于所有數據成員大小,即:占內存大小等于所有數據成員大小,即:8個字個字節(jié)。節(jié)。臺州學院計算機系面向對象程序設計(C+)23問題問題2:A aa; 調用構造函數嗎?調用構造函數嗎?答:由于答:由于A類中用戶沒有自己定義任何構造函數,類中用戶沒有自己定義任何構造函數,所以系統(tǒng)自動給所以系統(tǒng)自動給A類生成一個

16、無參、函數體為空類生成一個無參、函數體為空的構造函數。執(zhí)行的構造函數。執(zhí)行A aa時,系統(tǒng)會自動調用系統(tǒng)時,系統(tǒng)會自動調用系統(tǒng)給給A類生成的類生成的 A() 函數函數臺州學院計算機系面向對象程序設計(C+)24問題問題3:A aa100; 調用幾次構造函數?調用幾次構造函數?答案:答案:100次,次,aa數組中每個元素都是數組中每個元素都是A類的對象,類的對象,即有即有100個個A類對象,每個對象調用一次構造函數,類對象,每個對象調用一次構造函數,共調用共調用100次。次。臺州學院計算機系面向對象程序設計(C+)25問題問題4:將:將 A aa; 改為改為 A *p = new A; 此句調用

17、構造此句調用構造函數嗎?函數嗎?答案:答案:new A ,先開辟,先開辟A類對象大小的內存空間,類對象大小的內存空間,即即8個字節(jié),然后調用系統(tǒng)提供的默認構造函數個字節(jié),然后調用系統(tǒng)提供的默認構造函數A() 臺州學院計算機系面向對象程序設計(C+)26問題問題5:給:給A類增加構造函數和析構函數,程序輸出?類增加構造函數和析構函數,程序輸出?臺州學院計算機系面向對象程序設計(C+)27 給給A類增加兩個構造函數類增加兩個構造函數臺州學院計算機系面向對象程序設計(C+)28問題問題6:關于,:關于,main中中aa的說法正確的是:的說法正確的是:1. 系統(tǒng)調用構造函數系統(tǒng)調用構造函數A ( )

18、2. 系統(tǒng)調用構造函數系統(tǒng)調用構造函數A(int a, int b)3. 系統(tǒng)不自動執(zhí)行構造函數系統(tǒng)不自動執(zhí)行構造函數 4. A類有兩個構造函數,有歧義類有兩個構造函數,有歧義臺州學院計算機系面向對象程序設計(C+)29問題問題7:將:將main中中aa的定義改為:的定義改為:A aa(3,5); 下面說法正確的是:下面說法正確的是:1. 系統(tǒng)調用構造函數系統(tǒng)調用構造函數A ( ) 2. 系統(tǒng)調用構造函數系統(tǒng)調用構造函數A(int a, int b)3. 系統(tǒng)不自動執(zhí)行構造函數系統(tǒng)不自動執(zhí)行構造函數 4. A類有兩個構造函數,有歧義類有兩個構造函數,有歧義臺州學院計算機系面向對象程序設計(C+

19、)30問題問題8:若:若只給只給A類增加構造函數類增加構造函數A(int a, int b),則關于則關于main中中 A aa; 以下說法正確是:以下說法正確是:1. 調用系統(tǒng)提供的無參默認構造函數調用系統(tǒng)提供的無參默認構造函數A( )2. 系統(tǒng)調用構造函數系統(tǒng)調用構造函數A(int a, int b)3. 沒有與沒有與aa匹配的構造函數,有錯誤匹配的構造函數,有錯誤 臺州學院計算機系面向對象程序設計(C+)31 給給A類增加兩個構造函數類增加兩個構造函數臺州學院計算機系面向對象程序設計(C+)32問題問題9:關于,:關于,main中中aa的說法正確的是:的說法正確的是:1. 系統(tǒng)調用構造函

20、數系統(tǒng)調用構造函數A ( ) 2. 系統(tǒng)調用構造函數系統(tǒng)調用構造函數A(int a, int b)3. 系統(tǒng)不自動執(zhí)行構造函數系統(tǒng)不自動執(zhí)行構造函數 4. A類的兩個構造函數有歧義類的兩個構造函數有歧義臺州學院計算機系面向對象程序設計(C+)33問題問題10:在:在main中將中將aa 的的x設置為設置為0,格式正確的是:格式正確的是:1. setx(0); 2. x = 0; 3. aa.setx (0); 4. aa.x = 0; 臺州學院計算機系面向對象程序設計(C+)34問題問題11:在:在A類中添加成員函數類中添加成員函數printt 打印輸出打印輸出x和和y,定義,定義對的是:對的

21、是:1. void printt(A & t) cout t. x t.yendl;2. void printt( ) A t; cout t. x t.yendl;3. void printt( ) cout x yendl;4. void printt( ) cout aa.x aa.yendl;臺州學院計算機系面向對象程序設計(C+)35問題問題12:在:在A類中添加成員函數類中添加成員函數printt 打印輸出打印輸出x和和y,定義,定義對的是:對的是: 1. void printt( ) coutgetx( ) gety( )endl;2. void printt( ) A t; cout t. gety( ) t.getx( )endl;3.void printt (A & t) cout t. getx( ) t.gety( )endl;4. void printt ( ) cout aa. getx( ) aa.gety( )endl;臺州學院計算機系面向對象程序設計(C+)36 問題問題13:在:在main中調用中調用printt打印輸出打印輸出aa的的x和和y,調用格式正確的是:調用格式正確的是: 1. aa. printt( ); 2. a

溫馨提示

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

最新文檔

評論

0/150

提交評論