面向對象程序設計-朱勇_第1頁
面向對象程序設計-朱勇_第2頁
面向對象程序設計-朱勇_第3頁
面向對象程序設計-朱勇_第4頁
面向對象程序設計-朱勇_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、()從class繼承默認是private繼承,而從struct繼承默認是public繼承。    除此這外無任何區(qū)別。4. 面向對象的特征有哪些? 答:面向對象的四個基本特征是:封裝、繼承、抽象、多態(tài)。5. 簡述this指針的含義是什么?答:this 指針是一個隱含于每一個類的成員函數中的特殊指針(包括析構函數和構造函數),它用于指向正在被成員函數操作的對象。不過,在一般的程序設計中不直接用它的,this是一個指針變量,因此在成員函數中,可以使用*this來表示正在調用該函數的對象。6. 友元關系具有什么特點?二、分析下面的代碼,回答問題(每題 10 分

4、,共 40 分)1 分析下面的代碼,指出其中的錯誤,說明理由并改正class C public: int fn1( int x ) dm = x ; private: int dm; ;void main ( ) C c;c.fn1(16 );cout << c.dm << n;/dm為私有變量,是不能通過對象直接訪問的,正確的做法是添加一個public類型的方法,如public void Show()cout<<dm<<endl;然后利用對象c調用Show(),c.Show();2下面代碼的執(zhí)行結果是什么?為什么?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í)行結果:n=1m=2原因:b對象里包含一個A類的對象,b對象在析構時先調用A的析構函數,再調用B自身的析構函數3.下面代碼的執(zhí)行結果是什么?為什么?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();/結果:n=10Sample重載了賦值操作符,可以用Sample的一個對象去初使化另一個對象,s2對象被已經初使化的s1所初使化4. 下面代碼的執(zhí)行結果是什么

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)建對象的語句: D d(“class A”,”class B”,”class C”,”class D”);執(zhí)行結果是什么?為什么?/執(zhí)行結果:class Aclass Bclass Cclass D原因:不會,只是測試了一下,把結果給出來三、根據要求編寫完整程序:(每題15分,共 30 分)1設計復數類的加法運算操作,使之能夠執(zhí)行下列運算:( 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)/*這個函數體不會寫*/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. 設計High類,其數據成員為高h,定義虛函數disp()。由High派生出長

10、方體類Cuboid與圓柱體類Cylinder。在主函數中用基類指針變量p調用虛函數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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論