《第4-5章 練習(xí)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第4-5章 練習(xí)(7頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、類和對(duì)象
一、選擇題
1.面向?qū)ο蟪绦蛟O(shè)計(jì)中的數(shù)據(jù)隱藏指的是( )
A.輸入數(shù)據(jù)必須輸入保密口令 B.數(shù)據(jù)經(jīng)過加密處理
C.對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)上建有防火墻 D.對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)的不可訪問性
2.下列關(guān)鍵字中,不是類定義中使用的是( )
A.class B.public C.switch D.private
3.在用關(guān)鍵字class定義的類中,以下敘述正確的是( )
A.在類中,不作特別說明的數(shù)據(jù)成員均為私有類型
B.在類中,不作特別說明的數(shù)據(jù)成員
2、均為公有類型
C.類成員的定義必須是成員變量定義在前,成員函數(shù)定義在后
D.類的成員定義必須放在類定義體內(nèi)部
4.下列關(guān)于成員函數(shù)特征的描述中,錯(cuò)誤的是( )
A.成員函數(shù)一定是內(nèi)置函數(shù) B.成員函數(shù)可以重載
C.成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值 D.成員函數(shù)可以是靜態(tài)的
5.對(duì)于友元函數(shù)描述正確的是( )
A.友元函數(shù)的實(shí)現(xiàn)必須在類的內(nèi)部定義
B.友元函數(shù)破壞了類的封裝性和隱藏性
C.友元函數(shù)是類的成員
D.友元函數(shù)不能訪問類的私有成員
6.構(gòu)造函數(shù)不具備的特征的是( )
A.構(gòu)造函
3、數(shù)的函數(shù)名與類名相同 B.構(gòu)造函數(shù)可以重載
C.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù) D.構(gòu)造函數(shù)必須指定返回類型
8.對(duì)于一個(gè)類的構(gòu)造函數(shù),其函數(shù)名與類名( )
A.完全相同 B. 基本相同 C. 不相同 D. 無關(guān)系
9.下列函數(shù)中,不能重載的是( )
A.成員函數(shù) B.非成員函數(shù) C.析構(gòu)函數(shù) D.構(gòu)造函數(shù)
10.復(fù)制構(gòu)造函數(shù)具有的下列特點(diǎn)中,錯(cuò)誤的是( )
A.如果一個(gè)類中沒有定義復(fù)制構(gòu)造函數(shù)時(shí),系統(tǒng)將自動(dòng)生成一個(gè)默認(rèn)的。
B.復(fù)制構(gòu)造函數(shù)只有一個(gè)參數(shù),并且是該類對(duì)象的
4、引用。
C.復(fù)制構(gòu)造函數(shù)是一種成員函數(shù)。
D.復(fù)制構(gòu)造函數(shù)的名字不能用類名。
11.靜態(tài)成員的特性中,錯(cuò)誤的是( )
A.靜態(tài)成員函數(shù)不能利用this指針
B.靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化
C.引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加<類名>和作用域運(yùn)算符
D.靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共有的
12.下面對(duì)類中靜態(tài)數(shù)據(jù)成員的描述中,正確的是( )
A.靜態(tài)數(shù)據(jù)成員是類的所有對(duì)象共享的數(shù)據(jù)
B.類的每個(gè)對(duì)象都有自己的靜態(tài)數(shù)據(jù)成員
C.類的不同對(duì)象有不同的靜態(tài)數(shù)據(jù)成員
D.靜態(tài)數(shù)據(jù)成員不能通過類的對(duì)象調(diào)用
13.靜態(tài)
5、成員函數(shù)沒有( )
A.返回值 B.this 指針 C.指針參數(shù) D.返回類型
二、填空題
1對(duì)象將其大部分實(shí)現(xiàn)細(xì)節(jié)隱藏起來,這種機(jī)制稱為______ ____。封裝
2.類中的數(shù)據(jù)成員的訪問屬性通常被指明為____________。private或私有
3.在用class定義一個(gè)類時(shí),數(shù)據(jù)成員和成員函數(shù)的默認(rèn)權(quán)限是______________。private 或 私有
4.若要把類外定義的成員函數(shù)規(guī)定為內(nèi)置函數(shù),則必須把___________關(guān)鍵字放到函數(shù)原型或函數(shù)頭的前面。inline
5.若需要把
6、double fun(int a)函數(shù)定義為類A的友元函數(shù),則應(yīng)在類A的定義中加入一條語句____________ ____。friend double fun(int a);
6.假定用戶只為類AB定義了一個(gè)構(gòu)造函數(shù)“AB(int aa, int bb=0) {a=aa; b=bb;}”,則定義該類的對(duì)象時(shí),其實(shí)參表中至多帶有____________個(gè)實(shí)參。2
7.當(dāng)一個(gè)類對(duì)象撤銷時(shí)將自動(dòng)調(diào)用該類的____________。析構(gòu)函數(shù)
8假定一個(gè)類對(duì)象數(shù)組為A[8],當(dāng)離開它的作用域時(shí),系統(tǒng)自動(dòng)調(diào)用該類析構(gòu)函數(shù)的次數(shù)為________。8
10.假定 AB為一個(gè)類,則執(zhí)行“AB
7、 a[10];”語句時(shí),系統(tǒng)自動(dòng)調(diào)用該類構(gòu)造函數(shù)的次數(shù)為_________。10
11.假定用戶沒有給一個(gè)名為AB的類定義析構(gòu)函數(shù),則系統(tǒng)為其定義的析構(gòu)函數(shù)為__________。~AB() { }
12.假定類BB中有一個(gè)公用屬性的靜態(tài)數(shù)據(jù)成員ab,在類外不通過對(duì)象名訪問該成員ab的寫法為 。BB::ab
15.假定BB為一個(gè)類,則類定義體中的“BB(BB& x);”語句為該類____________的原型語句。復(fù)制構(gòu)造函數(shù)
17.對(duì)于任何一個(gè)類,析構(gòu)函數(shù)最多有________個(gè)。1
18.假定MyClass為一個(gè)類,執(zhí)行“MyClass a[4],*
8、p[3];”語句時(shí)會(huì)自動(dòng)調(diào)用給定類的構(gòu)造函數(shù)_______次。4
19.假定CC是一個(gè)類,則該類的復(fù)制構(gòu)造函數(shù)的聲明語句為__________。
CC(CC &);
21. __________具有對(duì)對(duì)象進(jìn)行初始化的功能。構(gòu)造函數(shù)
22.復(fù)制構(gòu)造函數(shù)的作用是__________。用對(duì)象初始化對(duì)象
三、程序閱讀
1.#include
#include
using namespace std;
class CZ {
char* a;
int b;
public:
void
9、 Init(char* aa, int bb)
{
a=new char[strlen(aa)+1];
strcpy(a,aa);
b=bb;
}
char* Geta() {return a;}
int Getb() {return b;}
void Output() {cout<
10、x.Getb()+5);
dx.Output();
dy.Output();
}
chang 30
zhou 95
2.#include
using namespace std;
class Box
{public:
Box( );
Box(int h,int w,int len):height(h),width(w),length(len){ }
int volume( );
private:
int height;
int width;
11、 int length;
};
Box::Box( )
{height=10;width=10;length=10;}
int Box::volume( )
{return(height*width*length);}
int main( )
{
Box box1;
cout<<"The volume of box1 is: "<
12、
cout<<"The volume of box2 is: "<
using namespace std;
class A
{
public:
A();
A(int i,int j);
void print();
private:
int a,b;
};
A::A(){a=5;b=10;}
A::
13、A(int i,int j){a=i,b=j;}
void A::print()
{cout<<"a="<
using namespace std;
class Time;
class Date
{public:
Date(int m,int d,int y):month(m),day(d),
14、year(y){ };
friend Time;
private:
int month;
int day;
int year;
};
class Time{
public:
Time(int h,int m,int s) :hour(h),minute(m),sec(s){ };
void display(const Date &);
private:
int hour;
int minute;
int sec;
};
void Time::display(const Date &d)
{ c
15、out<
class sample
{ int x;
16、 public:
void setx( int x0) {x=x0;}
friend int fun( sample b[ ], int n)
{ int m= (1) ;
for(int i=0; i
17、r[i]);
cout<
18、義析構(gòu)函數(shù),刪除a所指向的動(dòng)態(tài)存儲(chǔ)空間
};
(1) A() {a=0;} 或A():a(0){} (2) new char[strlen(aa)+1] (3) ~A() {delete []a;}
3.請(qǐng)根據(jù)注釋內(nèi)容填空。
class A {
int a,b;
public:
(1) //定義構(gòu)造函數(shù),使參數(shù)aa和bb的默認(rèn)值為0,
//在函數(shù)體中用aa初始化a,用bb初始化b
};
main()
{
A *p1, *p2;
19、
(2) ; //調(diào)用無參構(gòu)造函數(shù)生成由p1指向的動(dòng)態(tài)對(duì)象
(3) ; //調(diào)用帶參構(gòu)造函數(shù)生成由p2指向的動(dòng)態(tài)對(duì)象,
//使a和b成員分別被初始化為4和5
}
(1) A(int aa=0, int bb=0){a=aa; b=bb;} (2) p1=new A (3) p2= new A(4,5)
4.請(qǐng)根據(jù)注釋內(nèi)容填空。
class A {
int a,b;
public:
A(int aa=0, int bb=0) (1) {} //分別用aa和bb對(duì)應(yīng)初始化a和b
};
main() {
(2) ; //定義類A的對(duì)象x并用5初始化,同時(shí)定義y并用x初始化
(3) ; //定義p指針,使之指向?qū)ο髕
}
(1) :a(aa),b(bb) (2) A x(5),y(x) (3) A *p=&x