C 練習題考前複習

2022-12-04 22:00:03 字數 4509 閱讀 3108

第六章類和物件題解

第六章類和物件題解

一、選擇題

1.有關類的說法不正確的是()

a、類是一種使用者自定義的資料型別

b、只有類中的成員函式才能訪問類中的私有成員

c、在類中,如果不作特別說明,所指的資料均為私有型別

d、在類中,如果不作特別說明,所指的成員函式均為公有型別

解析:選項a和選項b的說法是正確的;對於選項c和選項d,因為在類中,如果不做特別說明,所指的資料成員和成員函式均為私有型別。因此,選項c也是正確的。

答案:d

2.有關析構函式的說法不正確的是()

a、析構函式有且僅有乙個

b、析構函式和建構函式一樣可以有形參

c、析構函式的功能是用來釋放乙個物件

d、析構函式無任何函式型別

解析:因為在乙個類中,析構函式有且僅有乙個,並且沒有返回值,它的功能是用來釋放乙個物件,在物件刪除前,用它來做一些清理工作,與建構函式的功能正好相反。析構函式不指定引數,而建構函式可以指定引數

答案:b

3.已知乙個類x,( )是定義指向類x成員函式的指標,假設類有3個公有成員:void f1(int),

void f2(int)和int a。

a、x *p b、int x::*pc=&x::a

c、void (x::*pa)() d、x *p[10]

解析:選項a定義了乙個x類物件指標p;選項b定義了乙個x類資料成員指標pc,並初始化指向資料成員a;選項c定義了個x類成員函式指標pa,所指向的成員函式沒有引數且資料型別為void ;選項d定義了乙個x型別物件指標陣列。

答案:c

4.下列的各類函式中,()不是類的成員函式。

a、建構函式 b、析構函式

c、友元函式 d、拷貝建構函式

5.下列定義中,x是乙個類,()是定義指向物件陣列的指標p。

a、x *p[4] b、x (*p)[4]

c、(x *)p[4] d、x *p[ ]

解析:在x(*p)[4]中,*在圓括號中,表示p是乙個指標,後面有描述符[4],表示p是乙個陣列指標,即p是指向含有4個元素的物件陣列的指標。

答案:b

6.已知p是乙個指向類x資料成員m的指標,s是類x的乙個物件。如果要給 m 賦值為3,()是正確的。

a、s.p=3 b、s->p=3

c、s.*p=3 d、*s. p=3

解析:通過類資料成員指標給資料成員賦值的語法形式為:《類名》 . <*指標》=《值》

答案;c

7.已知類x中的乙個成員函式說明如下:

void set(x &a);

其中,x &a的含義是()。

a、 指向類x的指標為a

b、 將a的位址賦給變數set

c、 a是類x的物件引用,用來作為set()形參

d、 變數x與a按位相與作為函式set()的引數

解析:x &a表示a是類x的物件引用,用來作為函式set()的形參

答案:c

8.乙個類的友元函式能夠訪問該類的()

a、私有成員 b、保護成員

c、公有成員 d、所有成員

解析:乙個類的友元函式對類成員的訪問能力等同於類的成員函式,即能訪問類的所有成員

答案:d

9.有關類和物件的說法不正確的是()

a、物件是類的乙個例項

b、乙個類只能有乙個物件

c、任何乙個物件只能屬於乙個具體的類

d、類與物件的關係和資料型別與變數的關係相似

解析:從語言的角度來說,類是一種使用者自己定義的資料型別,可以定義乙個物件。也就是說乙個類可以有許多個物件。

答案:b

10.下列靜態資料成員的特性中,()是錯誤的。

a、說明靜態資料成員時前邊要加關鍵字static來修飾

b、靜態資料成員在類體外進行初始化

c、引用靜態資料成員時,要在靜態資料成員名前加《類名》和作用域運算子

d、靜態資料成員不是所有物件所共有的

解析:選項a、b和c均是正確的;靜態資料成員是類的所有物件的共享的成員,而不是某個物件的成員。

答案:d

11.類模板的使用實際上是將類模板例項化成乙個具體的()。

a、類 b、物件 c、函式 d模板類

解析:類模板是類的抽象型別,它的例項化是生成乙個具體的類。類模板一經例項化,便可以用其建立物件。

答案:a

12.關於常資料成員的說法不正確的是()

a、常資料成員的定義形式與一般常量的定義形式相同,只不過常資料成員的定義必須出現在類體中

b、常資料成員必須通過初始化,並且不能被更新

c、常資料成員通過建構函式的成員初始化列表進行初始化

d、常資料成員可以在定義時直接初始化

解析:選項d顯然錯誤,因為常資料成員只能通過建構函式的成員初始化。選項a、b、c均正確。

答案:d

13.已知x類,則當程式以執行到語句

x array[3];

時,呼叫了()次建構函式。

a、0 b、1 c、2 d、3

解析:因為array是乙個物件陣列,也就是說x類現在有3個物件,每乙個物件都要呼叫一次建構函式,所以共3次。

答案:d

14.類模板的模板引數()

a、只可作為資料成員的型別

b、只可作為成員函式的返回型別

c、只可作為成員函式的引數型別

d、以上三者皆可

解析:類模板使用使用者可以為類定義一種模式,使得類中的某些資料成員、某些成員函式的引數和返回值可以取任意資料型別

答案:d

15.下列程式中說明的公有成員是()。

class location

a、x b、init (int initx,int inity)

c、getx(),gety() d、b和c都是

解析:類的成員包括資料成員和成員函式兩種。用關鍵字public修飾的成員是公有的,如果沒有使用關鍵字,則所有成員預設定義為private許可權,例如選項a是私有的。

答案:d

16.類定義的內容允許被其他物件無限制地訪問的是()

a、private部分 b、protected部分

c、public部分 d、以上都不對

答案:c

指標是c++實現(封裝)的一種機制,它將物件和該物件呼叫的成員函式連線在一起,在外部看來,每乙個物件都擁有自己的函式成員。

18.下面程式段中是內聯函式的是()

class location

int getx()

int gety();

}; inline int location :: gety ( )

a、 init(int initx,int inity)

b、 getx(),gety()

c、 a和b都是

d、 a和getx()

解析:內聯函式是指在函式定義時前面有關鍵字inline修飾,或者類的成員函式在類體內進行函式實現。init(int initx,int inity),getx()和gety()都是內聯函式,因為init(int initx,inity),getx(0都是在類體內進行函式實現的,而gety()是在類體外進行函式實現的,但前面有關鍵字inline修飾。

答案:c

19.類模板 template class x ,其中,友元函式f()成為從該類模板例項化的每個模板類的友元,則其說明應為()。

a、friend void f();

b、friend void f(x &);

c、friend void a::f();

d、friend void c::f(x &);

解析:因為友元函式f()成為該類模板例項化的每個模板類的友元,所以其引數和返回值均與型別引數t無關。

答案:a

二、填空題

1.在類內部定義的()和()資料不能被不屬於該類的成員函式來訪問,定義為()的資料,可以在類外部進行訪問。

解析:類中的私有資料成員和保護的資料成員只能被該類的成員函式來訪問,類中的公有資料成員可以在類外進行訪問。

答案:private,protected,public

2.在類中說明的具有類的型別的資料成員稱為()

解析:在乙個類中說明具有類的型別的資料成員,這些成員稱為物件成員

答案:物件成員

3.類資料成員和函式成員的預設型別為()

解析:在c++中,規定類中成員的預設型別為private

答案:私有型別

4.()是一種特殊的成員函式,它主要用來為物件分配記憶體空間,對類的資料成員進行初始化並執行物件的其他內部管理操作。

解析:類中的建構函式具有這種特徵。

答案:建構函式

規定,當乙個成員函式被呼叫時,系統會自動向它傳遞乙個隱含的引數,該引數是一指向接受該函式呼叫的物件的指標。這個指標是()指標。

答案:this

6.()成員函式不能直接引用類中說明的非靜態成員

解析:c++規定類的靜態成員函式只能引用類的靜態成員和非資料成員。因些靜態成員函式不能直接引用類中說明的非靜態成員。

答案:靜態

7.下面程式段中的錯誤語句是()

class aa

;解析:語句aa a;是錯誤的,類中包含自身型別的物件。

c語言練習題

下列敘述中不正確的是 c a 函式可以帶引數 也可以不帶引數。b main函式在c程式中必須有惟一乙個 c c程式的執行從main函式開始,所以main函式必須放在程式最前面 d 每個函式執行時,按函式體中語句的先後次序,依次執行每條語句 以下四個程式中,完全正確的是 d a include mai...

C期末練習題

1.有以下程式 main 程式的執行結果是 a 409 b.277 c.1 d.91 2.若變數已正確定義,有以下程式段 int a 3,b 5,c 7 if a b a b c a if c a c a printf d,d d n a,b,c 其輸出結果是 a 程式段有語法錯誤 b.3,5,3 ...

C語言練習題

1.兔子繁殖問題 設有一對新生兔子,從第三個月開始它們每個月都生一對兔子。按此規律,並假設沒有兔子死亡,一年後共有多少對兔子?答 include int main void 執行後結果 一年後的兔子數為 144 1 fib1 1 2 fib2 1 3 fib3 2 4 fib4 3 5 fib5 5...