c语言-7 联系客服

发布时间 : 星期一 文章c语言-7更新完毕开始阅读66120404eff9aef8941e0622

面向对象程序设计复习辅导七

---补充练习与参考之三

徐孝凯

一、单项选择

1. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为( )。C A. abc B. *this C. this D. this& 2. 假定AA是一个类,“AA& abc();”是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的值( )。A A. 已经被改变 B. 可能被改变 C. 不变 D.不受函数调用的影响

3. 假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值( )。C A. 已经被改变 B. 可能被改变

C. 不变 D. 受到函数调用的影响

4. 类中定义的成员默认为( )访问属性。B

A. public B. private C. protected D. friend 5. 结构中定义的成员默认为( )访问属性。A

A. public B. private C. protected D. friend

6. 当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( )。C

A. n B. n+1 C. n-1 D. n-2

7. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为( )。C A. length+1 B. first+length C. (first+length-1)%MS D. (first+leng

8. 栈具有( )的操作特性。B

A. 先进先出 B. 先进后出 C. 进出无序 D. 进出有序 9. 对于一个类的构造函数,其函数名与类名( )。A

A. 完全相同 B. 基本相同 C. 不相同 D. 无关系 10. 对于一个类的析构函数,其函数名与类名( )。C

A. 完全相同 B. 完全不同 C. 只相差一个字符 D. 无关系 11. 类的构造函数是在定义该类的一个( )时被自动调用执行的。C A. 成员函数 B. 数据成员 C. 对象 D. 友元函数 12. 类的析构函数是一个对象被( )时自动调用的。B A. 建立 B. 撤消 C. 赋值 D. 引用 13. 一个类的构造函数通常被定义为该类的( )成员。A A. 公用 B. 保护 C. 私有 D. 友元 14. 一个类的析构函数通常被定义为该类的( )成员。C A. 私有 B. 保护 C. 公用 D. 友元

15. 假定AB为一个类,则执行 “AB x;”语句时将自动调用该类的( )。B

A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数

1

16. 假定AB为一个类,则执行 “AB x(a,5);”语句时将自动调用该类的( )。A A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数

17. 假定AB为一个类,则执行 “AB *s=new AB(a,5);”语句时得到的一个动态对象为_______。D

A. s B. s->a C. s.a D. *s

18. 假定AB为一个类,则执行 “AB r1=r2;”语句时将自动调用该类的( )。D

A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 拷贝构造函数

19. 若需要使类中的一个指针成员指向一块动态存储空间,则通常在( )函数中完成。B A. 析构 B. 构造 C. 任一成员 D. 友元

二、填空

1. 类定义中,既包含数据成员,也包含________成员。函数

2. 类中的数据成员的访问属性通常被指明为________。private或私有

3. 类中的供外部调用定义的函数成员,其访问属性通常被定义为________。public或公有 4. 对于类中定义的任何成员,其隐含访问权限为________。private或私有

5. 对于结构中定义的任何成员,其隐含访问权限为________。public或公有

6. 为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为________。private

7. 若在类的定义体中给出了一个成员函数的完整定义,则该函数属于________函数。内联 8. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上________和两个冒号分隔符。类名

9. 若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名和两个________分隔符。冒号

10. 若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数原型或函数头的前面。inline

11. 把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的____________。作用域

12. 假定AA是一个类,“AA* abc();”是该类中一个成员函数的原型,则在类外定义时的函数头为__________________。AA* AA::abc()

13. 成员函数的参数表在类作用域中,成员函数的返回值类型________类作用域中。不在 14. 为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上________关键字。const

15. 若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上________关键字。const

16. 在每个成员函数中,隐含的第一个参数的参数名为________。 this

17.定义类动态对象数组时,其元素只能靠自动调用该类的____________来进行初始化。无参构造函数 18.在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块__________________。动态存储空间

19.为了释放类对象中指针成员所指向的动态存储空间,则需要为该类定义____________。析构函数

20. 假定 AB为一个类,则执行”AB a[10];”语句时,系统自动调用该类构造函数的次数为

2

________。10

21.假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为________。N

22.对类中对象成员的初始化是通过在构造函数中给出的______________来实现的。初始化表 23.对类中常量成员的初始化是通过在构造函数中给出的______________来实现的。初始化表 24.对类中引用成员的初始化只能通过在构造函数中给出的______________来实现的。初始化表

25.对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表来实现,也可以通过构造函数中的____________来实现。函数体

26. 假定要把aa定义为AB类中的一个常量整数型数据成员,则定义语句为____________。const int aa;

27. 假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为____________。int& aa;

28. 假定AB类中只包含一个整型数据成员a,并且它是一个常量成员,若利用参数aa对其进行初始化,则该类的构造函数的定义为____________________。AB(int aa):a(aa){};

29. 假定AB类中只包含一个整型数据成员a,并且它是一个引用成员,若利用引用参数aa对其进行初始化,则该类的构造函数的定义为____________________。AB(int& aa):a(aa){};

30.假定指针p指向一个动态分配的类对象,则当执行 \语句时,在释放p所指向的动态存储空间之前将自动调用该类的____________。析构函数

31.假定用户为类AB定义了一个构造函数\,则系统_________为该类自动定义一个无参构造函数\。不会

三、写出程序运行结果 1. #include #include class Point { int x,y; public: };

class Text {

char text[100]; //文字内容 public: Text(char * str) { strcpy(text,str); cout<<\

Point(int x1=0, int y1=0) :x(x1), y(y1) { cout<<\}

~Point() { }

cout<<\

3

} ~Text() {cout<<\};

class CircleWithText : public Point,public Text { public: CircleWithText(int cx,int cy, char *msg): Point(cx,cy),Text(msg) { cout<<\ }

~CircleWithText() {cout<<\

};

void main() {

CircleWithText cm(3,4,\

}

Point:3 4

Text con!

Point with Text con! Point with Text des Text des! Point des!

2.

#include class Date {

public:

void SetDate(int y,int m,int d){ Year=y; Month=m; Day=d; } void PrintDate(){ cout<

Date(int y,int m,int d){SetDate(y,m,d);} protected:

int Year,Month,Day; };

class Time {

public:

void SetTime(int h,int m,int s){ Houre=h; Minutes=m; Seconds=s;} void PrintTime(){ cout<

4