当前位置:文档之家› oop技术:面向对象技术复习思考题.doc

oop技术:面向对象技术复习思考题.doc

11.用typedef可以增加新类型。
12.宏替换不占用运行时间。
13.在include命令行中,用双引号和用尖括号将被包含的文件名括起来没有区别。
14.C++编译中的编译预处理可以看作一行C++语句。
15.头文件必须由系统提供。
16.创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数,当销毁这个对 象时顺序正好相反,先调用派生类的析构函数,再调用基类的析构函数。
cin » c;
if(c == 'c')
(
cout« "you chose 'c'" « endl;
continue; //返回主菜单
}
if(c == d)
(
cout« "you chose'd'" « endl;
continue; //返回主菜单
}
else
(
cout« "you didn't choose c or d!"« endl;
11.在定义拷贝构造函数时,为什么通常还要定义一个重载的赋值运算符?
12.拷贝构造函数在哪几种情况下调用?
%1.判断题
1.C++语言程序中,要调用的函数必须在main。函数中定义。
2.C++语言程序中,main。函数必须放在程序开始的部分。
3.C++语言程序中,urn语句必须放在函数的最后。
4.C++程序中有调用关系的所有函数必须放在同一源程序文件中。
int k;
for(k=0;k<=l 00;k+=50)
PRINT2(k,k+12.4);
11.#include<iostream.h>
#define CIR(r) r*r
void main()
(
int x=l;
int y=2;
int z;
z=CIR(x+y);
cout«z«endl;
}
12.#include <iostream.h>
9.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为
I,定义该类至少具有一个I0
10.举出C++中两神用户日定义的数据类型:I、I。
11.C++中没有字符串类型,字符串是通过I来表示的,每一个字符串
都有一个结尾字符I。
12.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向
(
cout« "you chose b" « endl;
continue;〃返回主菜单
I
else
cout« "you didn't choose c or d!H« endl; continue; //返回主菜单
}
cout « "you must type 1 or r or q!H« endl;
}
5.简述三种预编译指令的功能和格式
6.对象之间的相互作用和通信是通过消息。消息的组成部分有哪些?
7.如何测试你机器的int, float, double, long, char各类型变量存储的字节数。
8.do-while语句与while语句的主要区别是什么?
9.break语句实现的功能。
10.链表是怎样的一种数据结构,它与数组有什么不同?链表的插入和删除是怎样实现的?
对象程序设计的I特性。
13.在C++中,构造派生类对象时,总是先从I的初始化开始的。
14.类是用户定义的类型,具有类类型的变量称作Io
15.在5个运算符”*(乘号)、&&、v=、!、!= ”中,优先级由高到低的顺序是
16.在C++中,类定义一般用class关键字,不过用struct关键字也可以定义类,
29.使用关键字class定义的类中缺省的访问权限是私W (private)的。
30.说明或定义对象时,类名前不需加class关键字。
31.可以在类的构造函数中对静态数据成员进行初始化。
32.protected和private区别在于:protected成员可以被派生类访问,而private成员则不能 被派生类访问。
7.编写夏数类Complexo实现各种常用构造函数,实现其数之间的加、减、乘、赋值运算,以及= =、!=等逻辑运算。
8.定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stc虹]和 一个栈指针tos。栈数组的尺寸由常量SIZE确定。栈的基本操作为Push ()和Pop ()o
#define TEST
void main()
{
int x=0;
int y=l;
int z=l;
#ifdefTEST
cout«x«y;
#endif
cout«z;
}
%1.问答题
1.面向对象程序设计的基木思想是什么?
2.什么是对象、消息和类?
3.简述面向对象程序设计的主要特征。
4.下列运算符各能代表几种意义:*。
造函数,否则应用程序会产生一个编译错误。
5.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象
6.设"inta=3,b=4,c=5;”,表达式”(a+b) >c&&b! =c”的值是I°
7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型
8.动态联编要满足两个条件,它们是I、Io
5.编写几何点(二维平面上)的类Point,包括位置属性(二维坐标x, y),成员函数包括 点的位置获取函数GetX ()和GetY (),点的位置设置函数SetX ()和SetY (),和点的 位置移动函数MoveTo ()以及点的信息打印函数Display()。
6.编写几何图形圆的类Circle,包括两个属性:圆心0(用上题中的Point类实现)和半径Ro成员函数包括:圆心位置获取函数GetO ()和半径获取函数GetR();圆的位置移动函 数MoveTo();圆的半径设置函数SetR();以及圆的信息打印函数Display ()o
OOP
%1.填空题
1.在C++中,函数的参数有两种传逆方式,它们是值传逆和I。当一个成
员函数被调用时,该成员函数的I指向调用它的对象。
2.拷贝构造函数使用I作为参数初始化创建中的对象。
3.在公有继承的情况下,基类数据成员在派生类中的访问权限Io
4.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到I构
24.基类中定义了虚函数,在派生类中相应函数会自动变成虚函数。
25.要达到动态联编的效果,基类和派生类的对应函数不仅名字相同,而且返回类型、参数 个数和类型也必须相同。
26.如果派生类没有实现虚函数,那么它将使用他的基类的虚函数。
27.我们不能用抽象类定义对象,但可以定义对象的指针。
28.构造函数和析构函数可以是虚函数。
return 0;
)
9.#include <iostream.h>
struct stu
( int num;
char name[101;
int age;
};
void fun(stu *p)
( cout«( *p). name«end 1; }
main()
( stu students[3]=((9801,"Zhang",20),
cout« "quitting menu..." « endl;
}
2.编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素个数 并返回它。
3.有4个学生,每个学生包括学号,姓名,成绩。要求找出成绩最高者的姓名和成绩。
4.利用静态数据成员的概念,编写一个类,可以统计目前存在多少个该类的对象。
void main()
(
int a,b,c,d;
a=2;b=3;
ast(a,b,&c,&d);
coutvvc vvdvvendl;
}
8.#include <stdio.h>
struct cmplx
(
int x;
int y;
}cnum[2]={ 1,3,2,7};
int main()
(
printf("%d\n",cnum[O].y*cnum[ I ].x);
(9802,nLongH,21},
{9803,"Xue",19}};
fun(students+2);
}
10.#include "iostream.h"
#define PR(a) cout«a
#define PRINT 1 (a) PR(a);cout«endl
#define PRINT2(a,b) PR(a);PRINTl(b) void main()
21.在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具
有双重作用:对于其派生类而言,I;而对于其外部的程序而言,
22.C++中有两种数据类型:I和I可以使用signed修饰符。
23.举出C++中两种流程控制语句、I°
24.C++中,对象保存在内存中,I内存是自动分配和释放的,而
内存需要用户I I己申请和释放。
25.在C++函数中,可用return语句带回一个值。如果有多个返回值,可用
相关主题