12-4類與對象練習題面向對象_第1頁
12-4類與對象練習題面向對象_第2頁
12-4類與對象練習題面向對象_第3頁
免費預覽已結束,剩余11頁可下載查看

下載本文檔

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

文檔簡介

1、類和對象一、選擇題題 1 以下關于成員訪問權限的描述中,不正確的選項是 。A公有數據成員和公有函數成員都可以被類對象直接處理B類的私有數據成員只能被同類的公有成員函數以及該類的友元類或友元函數訪問C只有類或派生類的成員函數和友元類或友元函數可以訪問保護成員D保護成員在派生類中可以被派生類的函數成員訪問,而私有成員不可以題 2 以下關于構造函數的描述中,錯誤的選項是 。A構造函數可以設置默認參數B構造函數在定義類變量時被自動執行C構造函數可以對靜態數據成員進行初始化D構造函數可以重載題 3 一個類的友元函數或友元類能夠訪問該類的 。已出在第五章 PPTA 私有成員B保護成員C公有成員D公有成員、

2、保護成員和私有成員題 4 下面對于靜態成員的描述中,正確的選項是 。A靜態數據成員是類的所有對象共享的數據B類的每個對象都有自己的靜態數據成員C類的不同對象有不同的靜態數據成員值D 靜態數據成員不能通過類的對象調用題5 對于下面的類Samp,在函數fun中將p所指向的對象的成員 m的值改為70的語句 應該是class Samppublic:Samp (int x)n=x;void SetNum(int n1)n=nl; private:int n;int f( )Samp *ptr=new Samp (45);B ) SetNum(70);D ) ptr-n=70;A) Samp (70) ;

3、C) ptr-SetNum(70);題 6 下面是類 class_for_e6 的定義,以下描述正確的選項是 class Class_for_e6public:void Class_for_e6int aX=a;/1int fint a,int b/2X=a;Y=b;int fint a,int b,int c=0 /3X=a;Y=b;Z=c;static void gX=10; /4private:int X,Y ,Z;A 語句 1 是類 Class_for_e6 的構造函數的正確定義B語句2和語句3能實現類成員函數的重載C 語句4實現對類成員變量X的更新操作合法D以上說法都不正確題 7不是

4、構造函數的特征A構造函數的函數名與類名相同B構造函數可以重載C構造函數可以設置默認參數D構造函數必須指定返回類型說明題 8 有關析構函數的說法不正確的選項是 。A 析構函數有且只有一個B析構函數無任何返回類型C析構函數和構造函數一樣可以有形參D析構函數的作用是在對象被刪除前進行一些需要的清理工作題 9,是析構函數的特征。A一個類中只能定義一個析構函數B析構函數名與類名相同C析構函數的定義只能在類聲明體內D析構函數可以有一個或多個參數題 10 以下的各類函數中, 不是類的成員函數。拷貝構造函數A 構造函數 B 析構函數 C友元函數 D 題 11 以下靜態數據成員的特性中, 是錯誤的。A 說明靜態

5、數據成員時前邊要加修飾符 staticB靜態數據成員要在構造函數內進行初始化C可以直接使用類名來訪問靜態數據成員,和作用域限度符D靜態數據成員是所有對象所共用的13 Sample 中的一個成員函數說明如下: void setSample &a 其中形參 Sample &a 的含義是 指向類 Sample 的名為 a 的指針 將a的地址賦給變量seta 是類 Sample 的對象引用,用來做函數 變量 Sample 與 a 按位與的結果作為函數 個類,以下定義中A)B)C)D)14 Sample 是A ) Sample *p5C) (Sample*) p515 在下面定義中,錯誤的語句是 cla

6、ss Sample public:Sample(int val); Sample( );private:int a=2; flaot f;試卷二/A/B/C/D方法是在靜態數據成員名前加set的形參set的參數是定義指向對象數組的指針B ) Sample (*p)5D ) Sample *p一選擇題是不正確的。1、以下有關類的說法,A、類是一種用戶自定義的數據類型B、只有類中的成員函數才能存取類中的私有數據C、在類中如果不作特別聲明,所有數據成員均為私有類型D、在類中如果不作特別聲明,所有成員函數均為私有類型2、以下關于類與對象的說法中, 是不正確的。A、對象是類的一個實例B、任何一個對象只能

7、屬于某個的類C、一個類只能有一個對象D、類與對象的關系和數據類型與變量的關系相似3、以下關于構造函數的描述中,錯誤的選項是。A、構造函數可以設置默認參數B 、構造函數在定義類對象時自動執行C、構造函數可以是內聯函數D、構造函數不可以重載4、以下有關析構函數的說法中, ( )是錯誤的。A、一個類中析構函數有且只有一個B、析構函數無任何返回類型C、析構函數和構造函數一樣可以有形參D、析構函數的作用是在對象被刪除前進行一些清理工作。)為該類的析構函數的6、假定 MyClass 為一個類名,那么以下的函數說明中, ( 原型A、 MyClass ;B、 MyClass(int n);C 、 MyClas

8、s();D、 MyClass( );7.假設有一個 MyClass 類,那么執行語句 MyClass a, b(2), *p; 后,自動調用該類的構造函數 ()次。A) 2B) 3C) 4D) 59.下面關于友元函數的描述中,()是正確的。A 、友元函數的實現必須在類的內部定義B、友元函數是類的成員函數C、友元函數破壞了類的封裝性和隱藏性D、友元函數不能訪問類的私有成員10.在C+中,數據封裝要解決的問題是()A)數據的標準化C)防止數據喪失B)便于數據轉換D)防止不同模塊之間數據的非法訪問11、 一個類的友元函數或友元類可以訪問該類的()。A) 私有成員B) 保護成員C)公有成員D)所有成員

9、12、 在類中定義和實現的函數可以稱為()。A)靜態成員函數B)內聯函數C)常成員函數D)虛函數()是錯誤的。B)成員函數可以重載D)成員函數可以是靜態的13、以下關于成員函數特征的描述中,A)成員函數一定是內聯函數C)成員函數可以設置參數的默認值14. C+中對于結構中定義的成員,其默認的訪問權限為()。A)public B)protected C)private D) static15. 為了使類中的成員不被類的對象通過成員操作符來訪問,那么不能把該成員的訪問權限設 置為 ()。A) public B)protected C) private D) static16.下面對靜態數據成員的描

10、述中,(A) 靜態數據成員可以在類體內進行初始化B) 靜態數據成員不可以被類的對象來訪問C) 靜態數據成員不能設置為protectedD) 靜態數據成員可以直接用類名來訪問17.對于下面定義的類MyClass,在函數( )。class MyClasspublic:Myclass(int x)n=x; )void SetValue(int n1)(n=nl;)private:int n;int f( )MyClass *ptr=new MyClass(45);)是正確的。f() 中將對象成員 n 的值修改為 50 的語句應該是/ 對象的 n 的值為 45C) ptr-SetValue(50) D

11、) ptr-n=50)是正確的。A) MyClass(50)B)SetValue(50)18、類 MyClass 的定義如下 :class MyClass public:MyClass( )value=0; setVariable(int i) value=i;private:int value;那么以下各項對如下語句序列的描述中, (Myclass *p,my; p=&my;A) 語句 p=&my; 是把對象 my 賦值給指針變量 PB) 語句MyClass *p,my;會調用兩次類 MyClass的構造函數C) 語句 *p.SetVariable(5);是合法的D) 語句 p-SetVar

12、iable(5)與語句 my. SetVariable(5 )等價19. 類aClass的定義如下:class aClass public:aClass() aClass(int i) value=new int(i); int *value;那么下面的賦值語句中 ()是正確的。A)aClass my; my.value=10;B) aClass my; my.*value=0;C) aClass my; *(my.value)=10;D) aClass my(10);20. 下面類的定義,有 ()處錯誤class myclass int i=0;public:void MyClass( );

13、MyClass(int Value);A) 1B)2C) 3D) 421. 假設有以下程序 :#include classpoint int x,y;public :point(int x1,int x2=0) x=x1;y=x2; void setpoint(int x1,int y1) x=x1; y=y1; void dispoint( )cout x, ysetpoint(5,12); p-dispoint( ); 程序運行后的輸出結果是 ( )D) 5,12A) 12,12B) 12,0 C) 12,522. 假設有以下程序:#include classsample int n;pu

14、blic :sample(int i) n=i;void add() s+=n; static int s;void dis( ) cout sendl;int sample:s=0; void main()samplea(2),b(5),c(a);a. add ();b. add ();c. dis ( ); 程序執行后的輸出結果是 :A) 2 B)5 C) 7D) 923. 有如下程序 :#include classsample int x, y;public :sample(int i,int j) x=i ;y =j ; void disp() coutdispl endl; void

15、 disp() const coutdisp2 endl; ;int main() const samplea(1,2);a.disp( ); return 0; 該程序運行后的輸出結果是 ()。D程序編譯時出錯A) displ B) disp2 C) displ disp224. 假設有以下程序 :#include classsample int i;public :void setvalue(int m)i=m;void fun(int m) i+= m;void disp() couti setvalue(20); ps-fun(5); ps-disp(); 程序運行后,輸出的結果是 (

16、 )A) 15 B)20 C) 25 D) 3025。有以下程序 :#include #include classpoint double x; double y;public : point(double a,double b) x=a;y=b;friend double distance(point a,point b); doubledistance(pointa,point b) returnsqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); void main() point p1(1,2); point p2(5,2);coutdistance

17、(p1,p2)endl; 程序運行后的輸出結果是 ( )A) 1 B)5 C) 4 D) 626. 假設有以下程序 :#include classsample int n;public : sample() sample(int m) n=m; void addvalue(int m) samples;s.n=n+m;* this=s;void disp()cout n= nendl;void main() sample s(10);s.addvalue(5);s.disp();程序運行后的輸出結果是 ()。D) n=20A) n=10B) n=5C) n=15二、寫出以下程序段的輸出結果。1

18、#includeclass Testpublic:Test(int a);Test();private:int x;Test:Test(int a) x=a;coutConstructor ofxendl;Test:Test()coutDustructor ofxendl;void fun()Test FunObject(1);static Test StaticObject(2);Test GlobalObject(3);int main()Test MainObject(4);fun();return 0;2 #include#include classpersonprivate:int

19、no;char name20;public:void setvalue(const int no,constchar name) this-no=no; strcpy(this-name,name);int getno() return no;char * getname( ) return name;void main()person *p; p=new person; p-setvalue(1,zhang); coutgetno():(* p).getname() endl;3#include#include classStudentprivate:char number5;char na

20、me18;float score; static int counte;public:Student(char * num,char * name,float s) strcpy(number,num); strcpy(this-name,name); score=s; counte+;int get_counte( ) return counte;int Student:counte=0;void main()Student s1(2022,alan,67),s2(2030,afu,75);couts1.get_counte()endl;couts2.get_counte()endl;4 #

21、includeclassAprivate:int x;public:A(int a) x=a;friend class B;classBpublic:void print1(A a)a.x-;coutx=a.xendl;void print2(A a)a.x+;coutx= a.x endl;void main()A a(10);B b;b.print1(a);b.print2(a);5 #includeclassXprivate:int a;int b;public:X() a=0;b=0;X(int a,int b) X :a=a; X :b=b;void disp() couta= a,

22、b= b; ;classYprivate:X x;int y;public:Y() y=0;Y(int a,int b,int c):x(a,b)y=c;void disp()x.disp(); cout,y= y endl;void main()Y object1;Y object2(1,2,3);object1.disp();object2.disp();6#includeclassSample private:int x;int y; public:void get(int a,int b)x=a;y=b;void disp() coutx= x,y= yendl; ;void main

23、()Sample object1,object2; object1.get(10,20); object1.disp();object2=object1; object2.disp(); Sample object3(object2); object3.disp();7#includeclassClass_for_e12public:int a;int b;void show()couta= aendl;coutb= bendl;void main()int Class_for_e12:* p; Class_for_e12obj; p=& Class_for_e12:a; obj.* p=10

24、0;p=& Class_for_e12:b; obj.* p=200; obj.show();8#includeclassClassOne public :ClassOne(); ClassOne(int value); ClassOne(); void Print();private:int i;classClassTwopublic:ClassTwo(); ClassTwo(int value);ClassTwo();void Print(); private:int i;ClassOne: ClassOne()coutConstructor of ClassOne!endl; i=0;C

25、lassOne: ClassOne(int value)coutConstructor of ClassOne!endl;i =value; ClassOne:ClassOne()coutDesturctor of ClassOne!endl;void ClassOne:Print()coutThe i of ClassOne isiendl; ClassTwo:ClassTwo()coutConstructor of ClassTwo! endl; i=0;ClassTwo:ClassTwo(int value)coutConstructor of ClassTwo! endl; i =va

26、lue; ClassTwo:ClassTwo() coutDesturctor of ClassTwo! endl;void ClassTwo:Print()coutThe i of ClassTwo is i endl;int main()ClassTwo classobj(10);classobj.Print();return 0;9#includeclassMyclasspublic:Myclass();Myclass();void setValue(int val);private:int i;Myclass:Myclass()i=0;coutThis is a constructor! i= i endl;Myclass:Myclass()coutThis is a destructor! i= i endl;void Myclass:setValue(int val)i =val ;couti= iendl;int main()int

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論