




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、面向對象程序設計技術 作業四一、填空題 1、在定義類對象的語句執行時,系統在建立每個對象的過程中將自動調用該類的 構造函數 使其初始化。 2、當一個類對象被撤消時將自動調用該類的 析構函數 。 3、對基類數據成員的初始化是通過執行派生類構造函數中的 初始化表 來實現的。 4、對一個類中的數據成員的初始化可以通過構造函數中的 初始化表 實現,也可以通過構造函數中的 賦值語句 實現。 5、在一個派生類中,對基類成員、類對象成員和非類對象成員的初始化次序是先 基類成員 ,后 類對象成員 ,最后為 非對象成員 。 6、當撤消一個含有基類和類對象成員的派生類對象時,將首先完成 派生類本身 的析構函數定義
2、體的執行,接著完成 類對象成員 的析構函數定義體的執行,最后完成 基類成員 的析構函數定義體的執行。 7、設px是指向一個類動態對象的指針變量,則執行”delete px;”語句時,將自動調用該類的 析構函數 。 8、當一個類對象離開它的作用域時,系統將自動調用該類的 析構函數 。 9、假定一個類對象數組為AN,當離開它的作用域時,系統自動調用該類析構函數的次數為 N次 。 10、假定AB為一個類,則執行”AB a10;”語句時,系統自動調用該類構造函數的次數為 10次 。 11、假定用戶沒有給一個名為AB的類定義構造函數,則系統為其隱含定義的構造函數為 空構造函數 。 12、假定用戶沒有給一
3、個名為AB的類定義析構函數,則系統為其隱含定義的析構函數為空構造函數 。 13、若需要把一個函數”void F();”定義為一個類AB的友元函數,則應在類AB的定義中加入一條語句: friend void F(); 。 14、若需要把一個類AB定義為一個類CD的友元類,則應在類CD的定義中加入一條語句: feiend class AB; 。 15、假定一個類AB中有一個靜態整型成員bb,在類外為它進行定義并初始化為0時,所使用的語句為 AB:bb=0; 。 16、假定類AB中有一個公用屬性的靜態數據成員bb,在類外不通過對象名訪問該成員bb的寫法為 AB:bb 。 17、當類中一個字符指針成員
4、指向具有n個字節的存儲空間時,它所能存儲字符串的最大長度為 n-1 。 18、假定AB為一個類,則該類的拷貝構造函數的聲明語句為 AB:AB(AB&) 。 19、對類對象成員的初始化是通過執行構造函數中的 初始化表 完成的。 20、對于類中定義的成員,其隱含訪問權限為 private ,對于結構中定義的成員,其隱含訪問權限為 public 。 21、一個類的友元函數或友元類能夠通過成員操作符訪問該類的 所有數據成員和函數成員 。 22、假定要對類AB定義加號操作符重載成員函數,實現兩個AB類對象的加法,并返回相加結果,則該成員函數的聲明語句為: AB operator+(AB,AB);
5、 。 23、在C+流類庫中,根基類為 ios 。 24、在C+流類庫中,輸入流類和輸出流類的名稱分別為 istream 和 ostream .25、若要在程序文件中進行標準輸入輸出操作,則必須在開始的include命令中使用 iosteam.h 頭文件。 26、若要在程序文件中進行文件輸入輸出操作,則必須在開始的include命令中使用 fstream.h 頭文件。 27、當從字符文件中讀取回車和換行兩個字符時,被系統看作為一個 換行符 。 28、當使用ifsream流類定義一個流對象并打開一個磁盤文件時,文件的隱含打開方式為 讀取的文本文件 ,當使用ofstream流類定義一個流對象并打開一
6、個磁盤文件時,文件的隱含打開方式為 寫入的文本文件 。 29、當需要使用istrstream流類定義一個流對象并聯系一個字符串時,應在文件開始使用include命令,使之包含 strstrea.h 文件。 二、寫出下列程序運行后的輸出結果 1#include<iostream.h> class A int a,b; public: A() a=b=0; A(int aa, int bb) a=aa;b=bb; cout<<a<<''<<b<<endl; ; void main() A x, y(6,3), z(8,10
7、); 輸出結果:2 #include<iostream.h> class A int a,b; public: A(int aa=0, int bb=0):a(aa),b(bb) cout<<"Constructor!"<<a+b<<endl; ; void main() A x, y(2,5), z(y); 輸出結果:3 #include<iostream.h> class A int *a; public: A(int aa=0) a=new int(aa); cout<<"Constru
8、ctor!"<<*a<<endl; ; void main() A x2; A *p=new A(5); delete p; 輸出結果:4 #include<iostream.h> class A int a; public: A(int aa=0):a(aa) A()cout<<"Destructor!"<<a<<endl; ; void main() A x(5); A *p=new A(10); delete p; 輸出結果:5 #include<iostream.h> cl
9、ass A int *a; public: A(int x) a=new int(x); cout<<"Constructor!"<<*a<<endl; A()delete a;cout<<"Destructor!"<<endl; ; void main() A x(9),*p; p=new A(12); delete p; 輸出結果:6 #include<iostream.h> class A int a; public: A(int aa=0):a(aa) cout<<
10、;"Constructor A!"<<a<<endl; ; class B:public A int b; public: B(int aa,int bb):A(aa),b(bb) cout<<"Constructor B!"<<b<<endl; ; void main() B x(2,3),y(4,5); 輸出結果:7 #include<iostream.h> class A int a; public: A(int aa=0)a=aa; A()cout<<"
11、Destructor A!"<<a<<endl; ; class B:public A int b; public: B(int aa=0,int bb=0):A(aa)b=bb; B()cout<<"Destructor B!"<<b<<endl; ; void main() B x(5),y(6,7); 輸出結果:8 #include<iostream.h> #include<stdlib.h> class A int a,b;char op; public: A(int aa
12、,int bb,char ch)a=aa;b=bb;op=ch; int Comp() switch(op) case'+':return a+b; case'-':return a-b; case'*':return a*b; case'/':if(b!=0)return a/b;else exit(1); case'%':if(b!=0)return a%b;else exit(1); default:exit(1); void SetA(int aa,int bb,char ch) a=aa;b=bb;op=
13、ch; ; void main(void) A x(3,5,'*'); int a=x.Comp(); x.SetA(4,9,'+'); a+=x.Comp(); x.SetA(13,8,'%'); a+=x.Comp(); cout<<"a="<<a<<endl; 輸出結果:9 #include<iostream.h> class B int a,b; public: B()a=b=0; B(int aa,int bb)a=aa;b=bb; B operator+(B&
14、x) B r; r.a=a+x.a; r.b=b+x.b; return r; B operator-(B&x) B r; r.a=a-x.a; r.b=b-x.b; return r; void OutB() cout<<a<<' '<<b<<endl; ; void main() B x(6,5),y(13,3),z1,z2; z1=x+y;z2=x-y; z1.OutB();z2.OutB(); 輸出結果:10 #include<iostream.h> template<class TT> c
15、lass FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b3) a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+a3; ; void main() FF<int>x(8,3,4),y(5,9,11); cout<<x.Sum()<<' '<<y.Sum()<<endl; 輸出結果:三、寫出下列每個函數的功能 1. #include <iomanip.h> #include <fstream.h> #include <st
16、ring.h> void JA(char *fname) ofstream fout(fname); char a20; cin>>a; while(strcmp(a,"end")!=0) fout<<a<<endl; cin>>a; fout.close(); void JB(char *fname) ifstream fin(fname); char a20; int i=0; while(fin>>a) cout<<a<<endl; i+; fin.close(); cout&l
17、t;<"i="<<i<<endl; void main() JA("c:gm.dat"); JB("c:gm.dat"); 2 #include <iomanip.h> #include <fstream.h> void JB(char *fname) ifstream fin(fname); char a20; int i=0; while(fin>>a) cout<<a<<endl; i+; fin.close(); cout<<
18、"i="<<i<<endl; 3 #include <iomanip.h> #include <fstream.h> void JC(char *fname,int n) ofstream fout(fname,ios:out|ios:binary); int x; for(int i=0;i<n;i+) cin>>x; fout.write(char *)&x,sizeof(x); fout.close(); void JD(char * fname) ifstream fin(fname,ios:in|ios:nocreate|ios:binary); int x,s=0,n=0; while(fin.read(char *)&x,sizeof(x) s+=x;n+; cout<<n<<' '<<s<<' '<<float(s)/n<<endl; fin.close; void main() JC("c:gm.bat",5); JD("c:gm.bat");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 穴位水療腎小球腎炎-洞察及研究
- 湖南科技職業學院《電視藝術概論》2023-2024學年第一學期期末試卷
- 唐山師范學院《公共藝術》2023-2024學年第一學期期末試卷
- 晉中學院《社科中文工具書和信息工具應用》2023-2024學年第一學期期末試卷
- 大興安嶺職業學院《有氧教學與訓練(三)》2023-2024學年第一學期期末試卷
- 寶雞三和職業學院《牛生產學》2023-2024學年第一學期期末試卷
- 基于學習的運動控制-洞察及研究
- 安吉特色團建活動方案
- 家庭建材活動方案
- 安檢比武活動方案
- 倉儲式物流產業園建設項目可行性研究報告
- 國開電大《親子關系與親子溝通》形考+大作業
- 勞務派遣服務投標文件(技術方案)
- 2024年變電設備檢修工(高級)技能鑒定理論考試題庫-上(選擇題)
- 中醫診所負責人合作協議書范文
- 蝶閥試水方案
- 循環系統疾病智慧樹知到答案2024年哈爾濱醫科大學附屬第一醫院
- 2024-2030年中國激光水平儀行業市場發展趨勢與前景展望戰略分析報告
- 疑難病例討論課件
- 部編本小學語文六年級下冊畢業總復習教案
- AA-6880原子吸收操作規程
評論
0/150
提交評論