面向?qū)ο蠹夹g(shù)與C+(3)答案_第1頁
面向?qū)ο蠹夹g(shù)與C+(3)答案_第2頁
面向?qū)ο蠹夹g(shù)與C+(3)答案_第3頁
面向?qū)ο蠹夹g(shù)與C+(3)答案_第4頁
面向?qū)ο蠹夹g(shù)與C+(3)答案_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、面向?qū)ο蠹夹g(shù)與C+試卷答案第一題 填充題 (10 分,每 1 個空格 1 分)1. 當(dāng)使用帶參數(shù)的流操縱算子時,程序中必須包含( iomanip ) 頭文件。2. 復(fù)合對象中的成員對象是在建立復(fù)合對象之( 前) 建立的。3. 運算符new分配的動態(tài)內(nèi)存要用運算符 (delete )回收。如果在一個類的構(gòu)造函數(shù)中使 用new分配動態(tài)內(nèi)存,則回收操作應(yīng)在類的 (析構(gòu))函數(shù)中完成。4. struct 成員的默認(rèn)訪問模式是 ( public ),而 class 成員的默認(rèn)訪問模式是 ( private )。5. 關(guān)鍵字 (const ) 指定了不可修改的對象或變量。關(guān)鍵字 (const ) 指定一個類

2、的成員不會 修改類中的數(shù)據(jù)成員。6. 重載賦值運算符 operator= 時,應(yīng)將其聲明為類的( 成員 )函數(shù)。7. C+中的輸入/輸出是以字節(jié)(流)的形式實現(xiàn)的。第二題 指出下列程序段中的錯誤,說明錯誤原因 (10 分,每 1小題 5分)1class Rational /表示有理數(shù)的類聲明public :void Rational (int,int);/第 1 個參數(shù)為分子,第 2 個參數(shù)為分母/ 其他成員函數(shù)的原型說明private:void Rational ( );/默認(rèn)的數(shù)為 0,其分子表示為 0,分母表示為 1int a = 0 , b = 1;1) void Rational()

3、; 構(gòu)造函數(shù)的訪問屬性應(yīng)為 public2) 兩個構(gòu)造函數(shù)都不能指定返回類型3) int a = 0 , b = 1; 不能直接賦初值4 )最后少了一個分號 (;) 2 class myClass public: v = a ; si = b ; v = v + i ; return v + si; myClass(char a, int b) void f1(int i = 10) const static int f2()private:char v; static int si; ;1) static 函數(shù) f2() 不能訪問非 static 成員 v2) 構(gòu)造函數(shù)中不能對 static

4、 數(shù)據(jù)賦值3) const 成員函數(shù) f1 不能修改數(shù)據(jù)成員 v4) static 數(shù)據(jù) si 需要在類聲明的外面進行初始化第三題 選擇題 (10 分,每 1 個空格 1 分)1在 VC+ 中,目標(biāo)文件的擴展名為( B)A.cPPB.objC.hD.exe2通常情況下,模板函數(shù)的類型參數(shù)個數(shù)不能為(A )個。A 0B 1C 2D 2 個以上3既要禁止修改指針P ,又要禁止修改P所指的數(shù)據(jù),則P的正確定義是(D)。A const char* p=” xxxx ”;B char* const P=” xxxx ”;C char const *P=” xxxx ”;D const char * co

5、nst P=” xxxxD 中是( A)。4若函數(shù)f是類C中的虛函數(shù),類 D是類C的公有派生類,則函數(shù) f在類A 總是虛函數(shù)B 只有重新聲明時才是虛函數(shù)C 只有使用 virtual 關(guān)鍵字重新聲明時才是虛函數(shù)D 不可能是虛函數(shù)5. 每個類(A)析構(gòu)函數(shù)。A 只能有一個B 只可有私有的C 可以有多個D 只可有缺省的6. 重載函數(shù)調(diào)用運算符 OPerator時,應(yīng)將其聲明為類的(C)函數(shù)。A非成員B虛C成員D多態(tài)7. static 成員函數(shù)沒有( B)。A返回值Bthis 指針C指針參數(shù)D返回類型8. 設(shè)T是類名,則聲明 T a();表示a是(A)。A 函數(shù)名B 對象名C 函數(shù)指針D 引用8. 設(shè)

6、函數(shù) f 是類 A 的虛函數(shù),類 B 是類 A 的 public 派生類。 定義B d; A* P=&d; A& r=d;則采用動態(tài)聯(lián)編的是(B)和(E)。A d.f();B P-f();C P.f();D r-f();E r.f();第四題 簡答題(10 分)為什么編譯器認(rèn)為把基類指針轉(zhuǎn)換為派生類指針是危險的?派生類指針指向基類對象。 這種方法是不安全的, 因而需要避免。 因為通過派生類指針 使用派生類自己添加的成員是可以的,但它所指的基類對象中并不存在這種成員。第五題 寫出以下程序運行時的輸出結(jié)果 (10 分)#include using namesPace std;class A Pub

7、lic: A() cout initialize An; virtual void write() cout class A n; ;class B: Public A Public:B() cout initialize Bn; void write() cout class B n; ;class C: Public B Public:C() cout initialize Cn; void write() cout class Cn; ;class D: Public C Public:D() cout initialize Dn; ;int main( ) A a; B b; C c;

8、 D d;A* p = &a,&b,&c,&d; A arr = a,b,c,d;for (int i=0;iwrite(); arri. write(); return 0;initialize A initialize A initialize B initialize A initialize B initialize C initialize A initialize B initialize C initialize D class A class A class B class A class C class A class C class A第六題 寫出以下程序運行時的輸出結(jié)果

9、(10 分)#include using namespace std;class A public:A( ) cout AAA ; class B : public A public:B ( ) cout BBB ; private: A m1,m2;class C : public Apublic:C( ) cout CCC ; private: B m1,m2;A( ) cout AAA ; ;B( ) cout BBB ; C( ) cout CCC ; A obj; B obj2; C obj3;int main( )cout endl; delete p; C objc; B* p=

10、new B; static A sa;return 0;AAAAAAAAA AAABBBAAAAAAAAA AAA BBB AAAAAAAAABBBCCCAAAAAAAAAAAA BBBAAAAAAAAABBB CCC AAAAAAAAABBBBBBAAA AAAAAAAAACCCBBB AAAAAAAAABBBAAAAAAAAA AAA AAA CCCBBBAAAAAA AAA BBBAAAAAAAAAAAA BBBAAA AAA AAA AAA第七題 編程題 (10 分)編寫一個名稱為 sum 的函數(shù)模板計算其三個同類型參數(shù)值的和。template T sum(T a, T b, T c)

11、 return a+b+c; 第八題 編程題 ( 30 分) 建立一個能安全使用的動態(tài)數(shù)組類 DynamicArray 。 所謂安全使用指數(shù)組下標(biāo)越界時自動終止程序執(zhí)行; 所謂動態(tài)指數(shù)組的大小可在程序運 行過程中確定,而不必要在編寫程序時就確定下來。給類提供能完成下列功能的函數(shù): 構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù); 數(shù)組整體賦值和輸出; 下 標(biāo)運算符。/dynamicarray.h#ifndef DYNAMICARRAY_H#define DYNAMICARRAY_H#include using namespace std;class DynamicArray friend ostream& opera

12、tor(ostream&, const DynamicArray&);public: DynamicArray( int arraySize = 10 ); DynamicArray( const DynamicArray& ); DynamicArray();const DynamicArray& operator= ( const DynamicArray& ); int& operator ( int );private:int* ptr;int size;#endif/dynamicarray.cpp#include #include using namespace std;#incl

13、ude dynamicarray.hDynamicArray:DynamicArray(int arraySize) size = arraySize;ptr = new intsize; assert( ptr != 0 );for (int i = 0 ; i size ; i+ ) ptri = 0;DynamicArray:DynamicArray( const DynamicArray& init ) size = init.size;ptr = new intsize;assert( ptr != 0 );for (int i = 0 ; i size ; i+ ) ptri = init.ptri;DynamicArray:DynamicArray() delete ptr; int& DynamicArray:operator( int subscript) assert ( 0 = subscript & subscript size );return ptr subscript ;const DynamicArray& DynamicArray:operator= ( const DynamicArray& right ) if ( this != &right ) delete ptr; size = right.size; ptr =

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論