版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、類與對象習(xí)題11第四章類與對象習(xí)題基本概念與基礎(chǔ)知識填空題(知識點)4.1.1 引入類定義的關(guān)鍵字是(1)。類的成員函數(shù)通常指定為,類的數(shù)據(jù)成員通常指定為(3)。指定為(4)的類成員可以在類對象所在域(5)成員表示類的屬性,用類的 中的任何位置訪問它們。通常用類的 成員表示類的操作。答案:(1) class(2) 公有的public(3) 私有的 private(4) 公有的public 數(shù)據(jù)(6) 函數(shù)4.1.2 類的訪問限定符包括(1)、(2) 和(3)。私有數(shù)據(jù)通常由(4)函數(shù)來訪問(讀和寫)。這些函數(shù)統(tǒng)稱為(5)。答案:(1) public (公有的)(2) private (私有的)
2、(3) protected (保護的)(4) 公有的成員函數(shù)(5) 類的接口4.1.3 通常在邏輯上,同一類的每個對象都有(1)代碼區(qū),用以存儲成員函數(shù)。而在物理上通常只有(2)代碼區(qū)。只有在(3)定義,并 (4) 的函數(shù)和加了關(guān)鍵字的函數(shù)例外。答案:(1) 獨立的(2) 共用的(3) 在類說明中(4) 不包括循環(huán)等復(fù)雜結(jié)構(gòu) inline4.1.4 C+中支持三種域:(1)、(2)、(3)。函數(shù)域被包括在(4)中,全局域被包括在(5)中。using指示符以關(guān)鍵字using開頭,后面是關(guān)鍵字(6),最后是 (7)。這樣表示以后在該名字空間中所有成員都(8)。如不使用using指示符則在使用時要加
3、::,稱為(9)運算符。答案:(1) 局部域(local scope)(2) 名字空間域(namespace scope(3) 類域(class scop®(4) 局部域(5) 名字空間域(6) namespace(7) 名字空間名(8) 可以直接被使用(9) 域4.1.5引用通常用作函數(shù)的 (1) 和 (2)。對數(shù)組只能引用(3)不能引用(4)。答案:(1) 參數(shù) 返回值(3) 數(shù)組元素(4) 數(shù)組名本身4.1.6 構(gòu)造函數(shù)的任務(wù)是(1) 。構(gòu)造函數(shù)無(2)。類中可以有(3)個構(gòu)造函數(shù),它們由(4)區(qū)分。如果類說明中沒有給出構(gòu)造函數(shù),則 C+編譯器會 (5)??截悩?gòu)造函數(shù)的參數(shù)是(
4、6),當程序沒有給出復(fù)制構(gòu)造函數(shù)時,系統(tǒng)會自動提供(7) 支持,這樣的復(fù)制構(gòu)造函數(shù)中每個類成員(8)。答案:(1) 初始化數(shù)據(jù)成員(2) 函數(shù)返回類型說明(3) 多(4) 不同的參數(shù)表(5) 自動給出一個默認的構(gòu)造函數(shù)(6) 同一類對象的引用(7) 默認的的復(fù)制構(gòu)造函,稱為默認的按成員語義支持。(8) 被依次復(fù)制4.1.7 一個類有(1)個析構(gòu)函數(shù)。(2) 時.系統(tǒng)會自動調(diào)用析構(gòu)函數(shù)。(1) 一(2) 對象注銷時4.1.8運算符重載時,其函數(shù)名由 C1構(gòu)成。成員函數(shù)重載雙目運算符時,左操作數(shù)是 (2),右操作數(shù)是(3)。答案:(1) 關(guān)鍵字operator和該運算符 對象(3) 該函數(shù)的參數(shù)4
5、.1.9面向過程的程序設(shè)計中程序模型描述為(1),面向?qū)ο蟪绦蛟O(shè)計的程序模型可描述為 (2)。答案:(1) “程序=算法+數(shù)據(jù)結(jié)構(gòu)”。其數(shù)據(jù)與數(shù)據(jù)處理是分離的。(2)程序=(對象+對象+對象)+消息;對象=(算法+數(shù)據(jù)結(jié)構(gòu))。面向?qū)ο笤O(shè)計將數(shù) 據(jù)和對數(shù)據(jù)的操作方法放在一起,形成一個相對獨立的整體對象(Object),并通過簡單的接口與外部聯(lián)系。對象之間通過消息(Message)進行通訊。簡答題(知識點)1.2.1 簡單解釋什么是面向?qū)ο蟪绦蛟O(shè)計的封裝性。答:對象是一個封裝體,在其中封裝了該對象所具有的屬性和操作。對象作為獨立的基本單元,實現(xiàn)了將數(shù)據(jù)和數(shù)據(jù)處理相結(jié)合的思想。此外,封裝特性還體現(xiàn)在
6、可以限制對象中數(shù)據(jù)和操作的訪問權(quán)限,從而將屬性“隱藏”在對象內(nèi)部,對外只呈現(xiàn)一定的外部特性和功能。封裝性增加了對象的獨立性,C+通過建立數(shù)據(jù)類型一一類,來支持封裝和數(shù)據(jù)隱藏。一個定義完好的類一旦建立,就可看成完全的封裝體,作為一個整體單元使用,用戶不需要 知道這個類是如何工作的,而只需要知道如何使用就行。另一方面,封裝增加了數(shù)據(jù)的可靠 性,保護類中的數(shù)據(jù)不被類以外的程序隨意使用。這兩個優(yōu)點十分有利于程序的調(diào)試和維護。1.2.2 C+編譯器怎樣對標識符進行解析 ?答:編譯器對標識符的解析分兩步,第一步查找在聲明中用到的標識符,特別是函數(shù)成員聲明中用到的參數(shù)類型,第二步是函數(shù)成員體內(nèi)的標識符。1.
7、2.3 為什么說類與對象的概念是客觀世界的反映?答:客觀世界的事物都具有某些屬性和行為(或操作),具有相同屬性和行為的事物可以歸屬于一類,用分類的方法可以提高認識事物的效率。C+中定義的類則是通過抽象的方法將某一類事物共有的靜態(tài)特征(屬性)和動態(tài)特征(行為)概括出來并加以描述,而對象是類 的具體實現(xiàn),所以說類與對象的概念是客觀世界的反映。1.2.4 什么叫類域?為什么說類域是抽象的?答:類域是類體所包括的范圍。每個類定義都引入了一個獨立的類域,在類域中說明的標識符僅在該類的類域中有效。由于類只是一個說明,看上去有數(shù)據(jù),有函數(shù),有類型定義,但 是它并非實體,不分配內(nèi)存,當然也不能運行。所以說類域
8、是抽象的。1.2.5 引用作為函數(shù)參數(shù)時為什么能實現(xiàn)兩個實參之間的數(shù)據(jù)交換?為什么對應(yīng)實參不能為引用?為什么返回值為引用的函數(shù)可以作為左值?答:引用變量是其關(guān)聯(lián)變量的別名,二者在內(nèi)存中占據(jù)同一個存儲單元。在一個以引用作為參數(shù)的函數(shù)中,交換兩個參數(shù)的值,實際上就是交換兩個實參的值。 如果函數(shù)的參數(shù)是引用, 調(diào)用時需要取得實參的地址,而實參如果已經(jīng)是一個地址,再進行引用將產(chǎn)生錯誤, 故對應(yīng)實參不能為引用。函數(shù)返回引用實際是指明(返回)了相應(yīng)的關(guān)聯(lián)變量,所以聲明返回值為引用的函數(shù)實 際上是將關(guān)聯(lián)變量作為左值參與運算。1.2.6 什么是缺省的構(gòu)造函數(shù)?缺省的構(gòu)造函數(shù)最多可以有多少個?答:如果在類定義中
9、不顯式地定義構(gòu)造函數(shù),C+編譯器會自動產(chǎn)生一個缺省的構(gòu)造函數(shù),不過該函數(shù)不做具體的初始化工作。只要構(gòu)造函數(shù)是無參的或者只要各參數(shù)均有缺省值的, C+編譯器都認為是缺省的構(gòu)造函數(shù)。缺省的構(gòu)造函數(shù)只能有一個。1.2.7 拷貝構(gòu)造函數(shù)用于哪三個方面?答:(1) 用類的一個對象去初始化該類的另一個對象時使用。(2) 當函數(shù)的形參是類的對象,調(diào)用函數(shù)時,進行形參與實參結(jié)合時使用。(3) 當函數(shù)的返回值是類對象,函數(shù)執(zhí)行結(jié)束返回調(diào)用者時使用。1.2.8 寫出含有對象成員的類的構(gòu)造函數(shù)的格式,并做簡單說明。答:C+中對含對象成員的類對象的構(gòu)造函數(shù)有固定的格式:類名::構(gòu)造函數(shù)名(參數(shù)總表):對象成員1(參數(shù)
10、名表1),對象成員2(參數(shù)名表2),對象成 員n(參數(shù)名表n)冒號后用逗號隔開的是要初始化的對象成員,附在后面的參數(shù)名表1,,參數(shù)名表n依次為調(diào)用相應(yīng)對象成員所屬的構(gòu)造函數(shù)時的實參表。這些表中的參數(shù)通常來自冒號前的參數(shù)總表,但沒有類型名。1.2.9 所有類對象未重載的賦值運算符“=”是怎樣工作的?為什么它可以進行連續(xù)賦值?答:對所有的類對象,未重載的賦值運算符“=”稱作缺省的按成員拷貝賦值操作符,同類對象之間可以用“=”直接拷貝。因為缺省的賦值操作返回一個對象的引用,所以它可以進 行連續(xù)賦值。1.2.10 為什么在友元函數(shù)的函數(shù)體內(nèi)訪問對象成員時,必須用對象名加運算符再加對象成員名?答:友元函
11、數(shù)不是類的成員函數(shù),在函數(shù)體中訪問對象的成員,必須用對象名加運算符".'加對象成員名。這一點和一般函數(shù)一樣。1.2.12 類的靜態(tài)數(shù)據(jù)成員與函數(shù)中的靜態(tài)成員有何異同?答:類的靜態(tài)成員為其所有對象共享,不管有多少對象,靜態(tài)成員只有一份存于公用內(nèi)存中,為該類所有對象公用。 函數(shù)中的靜態(tài)變量也位于公用內(nèi)存中,不隨函數(shù)調(diào)用而重新分配,所以總是保留上次進入并執(zhí)行該函數(shù)后留下的信息。1.2.13 C+中結(jié)構(gòu)、聯(lián)合與類三者間有何異同?答:在C+中結(jié)構(gòu)(structure)與類幾乎是完全一樣的類型,差別僅僅在于缺省情況下結(jié)構(gòu) 的成員為公有的。聯(lián)合(union)是C+的導(dǎo)出數(shù)據(jù)類型,在語法與功
12、能上類似于結(jié)構(gòu),二 者的區(qū)別是:結(jié)構(gòu)變量的各成員同時被分配了各自獨立的內(nèi)存區(qū),而聯(lián)合變量的各個成員的 存儲開始地址都相同,所以在任一時刻聯(lián)合變量只能存儲一個成員。1.2.14 對象的第一特征是封裝,那么由對象組成的面向?qū)ο蟮某绦蛟鯓咏⒏鲗ο笾g的有效聯(lián)系?面向?qū)ο蟪绦虻慕M織與面向過程有什么不同?答:因為對象的操作主要用來響應(yīng)外來消息并為其他對象提供服務(wù),所以面向?qū)ο蟮某绦蚶孟鬟f機制來建立各對象之間的有效聯(lián)系,協(xié)調(diào)各對象的運行。一個對象可以向其他對象發(fā)送消息以請求服務(wù), 也可以響應(yīng)其他對象傳來的消息,完成自身固有的某些操作,從而服務(wù)于其他對象。面向過程的程序是模塊化的,模塊的組織具有分層
13、結(jié)構(gòu)特點,層與層之間是調(diào)用關(guān)系。面向?qū)ο蟪绦蚴怯梢粋€個封裝的對象組成,而對象是由緊密結(jié)合在一起的算法和數(shù)據(jù)結(jié)構(gòu)組成。對象之間是相互請求和相互協(xié)作的關(guān)系。1.2.15 類的成員函數(shù)在什么情況下應(yīng)該定義為私有的?這樣做的目的是什么?答:除接口函數(shù) 和創(chuàng)建本類對象的構(gòu)造函數(shù)和撤消該對象的析構(gòu)函數(shù)外。其余成員函數(shù)應(yīng)該定義為私有的,這是開發(fā)類時故意對外隱蔽起來的操作,而這些往往是最復(fù)雜最關(guān)鍵的部分。類中故意的隱藏也為以后的升級擴展留下了余地,只要接口不變,內(nèi)部再變,也不必修改原來的程序,就象 MFC (微軟基礎(chǔ)類)升級后,由 MFC底層類所編的程序完全不必修改,自 動升級。二.編程與綜合練習(xí)題4.3 構(gòu)
14、造一個日期時間類(Timedate),數(shù)據(jù)成員包括年、月、日和時、分、秒,函數(shù)成員 包括設(shè)置日期時間和輸出時間,其中年、月請用枚舉類型,并完成測試。(包括用成員函數(shù)和用普通函數(shù))#include<iostream.h>class Timedateint year,month,day,hour,minute,second; enum Yearpublic:Timedate() cout4.4 設(shè)計并測試一個矩形類(Rectangle),屬性為矩形的左下與右上角的坐標,矩形水平 放置。操作為計算矩形周長與面積。測試包括用成員函數(shù)和普通函數(shù)。#include<iostream.h&
15、gt;class Rectangle double point1,point2,point3,point4;public:double getpoint1() return pointl;double getpoint2() return point2;double getpoint3() return point3;double getpoint4() return point4;double girth();double area();Rectangle。 cout<<"輸入矩形的左下與右上角的坐標:"<<endl;cin>>poin
16、t1>>point2>>point3>>point4; ; double Rectangle:girth() 周長 return 2*(point3-point1+point4-point2); double Rectangle:area() return (point3-point1)*(point4-point2); double girth(double point1,double point2,double point3,double point4) return 2*(point3-point1+point4-point2); double are
17、a(double point1,double point2,double point3,double point4) return (point3-point1)*(point4-point2); void main () Rectangle rectangle;cout<<"成員函數(shù) n"<<"矩形周長:"<<rectangle.girth()<<"n 矩形面積:"<<rectangle.area()<<endl;cout<<" 普 通 函
18、 數(shù) n"<<" 矩 形 周 長:"<<girth(rectangle.getpoint1(),rectangle.getpoint2(),rectangle.getpoint3(),rectangle.getpoint4( ) <<"n矩形面積:"<<area(rectangle.getpoint1(),rectangle.getpoint2(),rectangle.getpoint3(),rectangle.getpoint4() )<<endl; #include<iost
19、ream.h>class Rectangle public:double point1,point2,point3,point4;friend double girth(Rectangle &rec);friend double area(Rectangle &rec);double girth();double area();Rectangle。cout<<"輸入矩形的左下與右上角的坐標:"<<endl;cin>>point1>>point2>>point3>>point4;;d
20、ouble Rectangle:girth() 周長double Rectangle:area()return 2*(point3-point1+point4-point2);double girth(Rectangle &rec)double area(Rectangle &rec)void main ()return (point3-point1)*(point4-point2);return 2*(rec.point3-rec.point1+rec.point4-rec.point2);return (rec.point3-rec.point1)*(rec.point4-
21、rec.point2);Rectangle rectangle;cout<<"成員函數(shù) n"<<"矩形周長:"<<rectangle.girth()<<"n 矩形面積:"<<rectangle.area()<<endl;cout<<"普通函數(shù) n"<<"矩形周長:"<<girth(rectangle)<<"n 矩形面積:"<<area(recta
22、ngle)<<endl;I C" I- UV IH |J U JulH 1-iJ pu XBH USI D:.叩T模值吐 DeDUQ dj.exe'左下與右上角的坐才i數(shù)工函周面函nr-z/%,z4.5 定義一個圓類(Circle ),屬性為半徑(radius)、圓周長和面積,操作為輸入半徑并計0,算周長、面積,輸出半徑、周長和面積。要求定義構(gòu)造函數(shù)(以半徑為參數(shù),缺省值為周長和面積在構(gòu)造函數(shù)中生成)和拷貝構(gòu)造函數(shù)。#include<iostream.h>class Circledouble radius, girth,area;public:Circ
23、le(double r=0) cout<<"構(gòu)造"<<endl;radius=r;girth=2*3.14*radius;area=radius*radius*3.14;Circle(const Circle &circle) cout<<"拷貝"<<endl;radius=circle.radius;girth=circle.girth;area=circle.area;void display。cout<<"半徑:"<<radius<<en
24、dl<<"周長:"<<girth<<endl<<"面積:"<<area<<endl;void main ()Circle cir1(1);Circle cir2(cir1);cir1.display();cir2.display();”D:PPT板 2 1 2 1 w » 16 3 16 3 造貝隹菽 智拷半用畫半周面4.6 設(shè)計一個學(xué)校在冊人員類(Person)。數(shù)據(jù)成員包括:身份證號(IdPerson),姓名(Name),性別(Sex),生日(Birthday)和家庭住
25、址(HomeAddress )。成員函數(shù)包括人員信息的錄入 和顯示。還包括構(gòu)造函數(shù)與拷貝構(gòu)造函數(shù)。設(shè)計一個合適的初始值。#include<iostream.h>#include<string.h>class Personchar name20;char id19;char sex;struct Birthday int year;int month;int date;birthday;char home50;public:Person()cout<<"執(zhí)行構(gòu)造函數(shù)n"<<"輸入姓名:";cin>>
26、;name;cout<<"輸入身份證:";cin>>id;cout<<"輸入T別:”;cin>>sex;cout<<"生日:";cin>>birthday.year>>birthday.month>>birthday.date;cout<<"家庭地址:"cin>>home;cout<<endl;Person(const Person &p)cout<<"執(zhí)行復(fù)制函數(shù)
27、"<<endl;strcpy(name,);strcpy(id,p.id);sex=p.sex;birthday.year=p.birthday.year;birthday.month=p.birthday.month;birthday.date=p.birthday.date;strcpy(home,p.home);void display。cout<<"姓名:"<<name<<"n 身份證號:"<<id<<"n 性別:"<<sex<<"n 生日:”<<birthday.year<<"-"<<birthday.month<<"-"<<birthday.date<<endl<<"家庭地址:&qu
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工行業(yè)員工績效考核
- 市場行業(yè)策劃員工作總結(jié)
- 瞄準高效輸出的年度目標計劃
- 2024年廣西壯族自治區(qū)北海市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2024年河北省承德市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年浙江省寧波市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 美麗家庭事跡材料
- 河南省鄭州市(2024年-2025年小學(xué)六年級語文)部編版隨堂測試(上學(xué)期)試卷及答案
- 廣西北海市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版小升初模擬(上學(xué)期)試卷及答案
- 2025年家電配線組件項目規(guī)劃申請報告
- 養(yǎng)豬場施工噪聲環(huán)境影響分析
- Windows-Server-2012網(wǎng)絡(luò)服務(wù)架構(gòu)課件(完整版)
- 2022版義務(wù)教育語文課程標準(2022版含新增和修訂部分)
- 形位公差_很詳細(基礎(chǔ)教育)
- 手榴彈使用教案
- 600MW機組除氧器水位控制系統(tǒng)
- 史上最全的涉稅風(fēng)險
- 初中數(shù)學(xué)問題情境的創(chuàng)設(shè)
- 朱東潤《中國歷代文學(xué)作品選》目錄簡體字版
- 電力設(shè)備典型消防規(guī)程.ppt
- 北京興昌達博房地產(chǎn)開發(fā)有限公司重整計劃
評論
0/150
提交評論