面向?qū)ο蟪绦蛟O(shè)計(jì)-朱勇_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)-朱勇_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)-朱勇_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)-朱勇_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)-朱勇_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 面向?qū)ο蟪绦蛟O(shè)計(jì)1什么是抽象類?它有什么特點(diǎn)?答:用 abstract 修飾的類是抽象類。在C+中,含有純虛擬函數(shù)的類稱為抽象類,它不能生成對(duì)象。抽象類是不完整的,并且它只能用作基類。其特點(diǎn)如下:1、抽象類不能直接實(shí)例化,并且對(duì)抽象類使用 new 運(yùn)算符是編譯時(shí)錯(cuò)誤。雖然一些變量和值在編譯時(shí)的類型可以是抽象的,但是這樣的變量和值必須或者為 null,或者含有對(duì)非抽象類的實(shí)例的引用(此非抽象類是從抽象類派生的)。2、允許(但不要求)抽象類包含抽象成員。3、抽象類不能被密封。2C+中使用多態(tài)的前提條件是什么?答:C+重載、重寫均是多態(tài): 1)從語法上說:重載必須函數(shù)名和返回值一致,且參

2、數(shù)順序、個(gè)數(shù)和類型(有一個(gè)不一樣),而重寫必須函數(shù)名和返回值一致,且參數(shù)順序、個(gè)數(shù)和類型(必須全一樣)。2)重載可以用于一個(gè)類自身內(nèi)部,也可以用于繼承類;重寫只能用于繼承類關(guān)系中。3)重載一般用于需要在某些參數(shù)允許被缺省的情況下完成(可省略參數(shù)的函數(shù))。重寫用于“工廠模式”以及其衍生產(chǎn)品中發(fā)揮作用。3. 什么是類?類與結(jié)構(gòu)有和不同?答:類是一種復(fù)雜的數(shù)據(jù)類型,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。在c+中類和結(jié)構(gòu)除了關(guān)鍵字不同之外只有兩點(diǎn)區(qū)別:()class中默認(rèn)的成員訪問權(quán)限是private的,而struct中則是public的。    

3、()從class繼承默認(rèn)是private繼承,而從struct繼承默認(rèn)是public繼承。    除此這外無任何區(qū)別。4. 面向?qū)ο蟮奶卣饔心男?#160;答:面向?qū)ο蟮乃膫€(gè)基本特征是:封裝、繼承、抽象、多態(tài)。5. 簡(jiǎn)述this指針的含義是什么?答:this 指針是一個(gè)隱含于每一個(gè)類的成員函數(shù)中的特殊指針(包括析構(gòu)函數(shù)和構(gòu)造函數(shù)),它用于指向正在被成員函數(shù)操作的對(duì)象。不過,在一般的程序設(shè)計(jì)中不直接用它的,this是一個(gè)指針變量,因此在成員函數(shù)中,可以使用*this來表示正在調(diào)用該函數(shù)的對(duì)象。6. 友元關(guān)系具有什么特點(diǎn)?二、分析下面的代碼,回答問題(每題 10 分

4、,共 40 分)1 分析下面的代碼,指出其中的錯(cuò)誤,說明理由并改正class C public: int fn1( int x ) dm = x ; private: int dm; ;void main ( ) C c;c.fn1(16 );cout << c.dm << n;/dm為私有變量,是不能通過對(duì)象直接訪問的,正確的做法是添加一個(gè)public類型的方法,如public void Show()cout<<dm<<endl;然后利用對(duì)象c調(diào)用Show(),c.Show();2下面代碼的執(zhí)行結(jié)果是什么?為什么?class Aint n;pu

5、blic:A() ;A(int i)n=i;A() cout<<"n="<<n<<endl;class B A a; int m;public:B(int i,int j):a(i)m=j;B()cout<<"m="<<m<<endl;void main()B b(1,2);/執(zhí)行結(jié)果:n=1m=2原因:b對(duì)象里包含一個(gè)A類的對(duì)象,b對(duì)象在析構(gòu)時(shí)先調(diào)用A的析構(gòu)函數(shù),再調(diào)用B自身的析構(gòu)函數(shù)3.下面代碼的執(zhí)行結(jié)果是什么?為什么?class Sampleint n;public:Sampl

6、e();Sample(int i)n=i;Sample& operator=(Sample);void disp()cout<<"n="<<n<<endl;Sample & Sample:operator=(Sample s)Sample:n=s.n;return *this;void main()Sample s1(10),s2; s2=s1; s2.disp();/結(jié)果:n=10Sample重載了賦值操作符,可以用Sample的一個(gè)對(duì)象去初使化另一個(gè)對(duì)象,s2對(duì)象被已經(jīng)初使化的s1所初使化4. 下面代碼的執(zhí)行結(jié)果是什么

7、?為什么?class Apublic:A(char *s) cout<<s<<endl;A();class B:virtual public Apublic:B(char *s1,char*s2):A(s1)cout<<s2<<endl;class C:virtual public Apublic:C(char* s1,char* s2) : A(s1)cout<<s2<<endl;class D: public B, public Cpublic:D(char *s1,char *s2,char *s3,char *s4

8、):B(s1,s2),C(s1,s2),A(s1)cout<<s4<<endl;創(chuàng)建對(duì)象的語句: D d(“class A”,”class B”,”class C”,”class D”);執(zhí)行結(jié)果是什么?為什么?/執(zhí)行結(jié)果:class Aclass Bclass Cclass D原因:不會(huì),只是測(cè)試了一下,把結(jié)果給出來三、根據(jù)要求編寫完整程序:(每題15分,共 30 分)1設(shè)計(jì)復(fù)數(shù)類的加法運(yùn)算操作,使之能夠執(zhí)行下列運(yùn)算:( 15 分)Complex x(3,6), y(4,5), z(0,0);z = x + y;z=2.4 + x;z=y + 3.5/Complex

9、operator+(Complex s1)/*這個(gè)函數(shù)體不會(huì)寫*/Complex Complex:operator+(const Complex &s1)Complex tmp;tmp.real=this->real+s1.real;tmp.imag=this->imag+s1.imag;return tmp;Complex Complex:operator+(double d)Complex tmp;tmp.real+=d;tmp.imag=this->imag;return tmp;2. 設(shè)計(jì)High類,其數(shù)據(jù)成員為高h(yuǎn),定義虛函數(shù)disp()。由High派生出長

10、方體類Cuboid與圓柱體類Cylinder。在主函數(shù)中用基類指針變量p調(diào)用虛函數(shù)disp()顯示長方體與圓柱體的體積。(15分)class Highpublic:unsigned int h;virtual void disp();class Cuboid:public HighPublic:unsigned int length;unsigned int width;virtual void disp()cout<<length*width*h<<endl;Class Cylinder:public High Public:unsigned int r;/半徑virtual void disp()cout<<3.14159*r*r*h<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論