ITAT—教育部教育管理信息中心 樊本宏
[解析]类模板的使用。template
5. 定义类的动态对象数组时,系统只能够自动调用该类的___构造函数对其进行初始化。 答案:(考点80)无参
[解析]使用new创建对象数组,调用无参构造函数。 6. 表达式cout< [解析]endl与字符常量‘\n’等价。 7. 在C++中,访问一个指针所指向的对象的成员所用的指向运算符是___。 答案:-> [解析]指针使用成员有两种方法:“->”指向运算符和“.”成员访问运算符。 8. 假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调 用___构造函数来完成此功能。 答案:(考点80)复制或拷贝 复制或拷贝构造函数就是用对象初始化新的对象。 9. 对赋值运算符进行重载时,应声明为___函数。 答案:(考点183)类成员 [解析]运算符重载的方法有友元或者成员函数两种途径,但是赋值运算符只能使用成员函数的 方法来实现。 10. 如果要把A类成员函数f()且返回值为void声明为类B的友元函数,则应在类B的定义中加 入的语句___。 答案:(考点109)friend void A::f(); [解析]成员函数作为另一个类的友元函数,格式为:friend 返回类型 类名::函数(形参)。 11. 下列程序段的输出结果是___。 for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout< [解析]for循环结构,三个表达式的作用,初始化、循环判断条件和循环变量变化。循环执行了 三次,k的作用是计算i、j的和。 12. String 类的___方法返回查找到的字符串在主串的位置。 答案:(考点40)find [解析]string类对象方法的find,查不到字符串,则返回-1。 13. int n=0; while(n=1)n++; while循环执行次数是___。 答案:无限次 [解析]=是赋值运算符,不是关系运算符,且不等0,所以死循环。 14. 控制格式输入输出的操作中,函数___是用来设置填充字符。要求给出函数名和参数类型 答案:(考点195)setfill(char) [解析]格式控制方法的使用,如setw,setfill等等。 15. C++语言支持的两种多态性分别是编译时的多态性和___的多态性。 答案:(考点167)运行时 [解析]多态性包括静态的(编译时)多态性和动态的(运行时)多态性。 16. 设函数sum是由函数模板实现的,并且sum(3,6)和sum(4.6,8)都是正确的函数调用,则函 数模板具有___个类型参数。 答案:(考点61)2 17. 执行下列代码 string str(\cout< [解析]substr取子字符串,第1个参数表示要截取子串在字符串中的位置,第2个表示取多少个 字符。 5 ITAT—教育部教育管理信息中心 樊本宏 18. 在面向对象的程序设计中,将一组对象的共同特性抽象出来形成___。 答案:(考点38)类 [解析]类是相似特征的对象的抽象,对象是类的一个实例。 19. 定义类动态对象数组时,元素只能靠自动调用该类的___来进行初始化。 答案:(考点77)无参构造函数 [解析]使用new 创建动态对象数组,不能有参数,所以只能调用无参的构造函数,初始化对象 20. 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是___。 答案:(考点151)ector [解析]采用向量初始化另一个向量的形式:vector 三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下 横线标出错误所在行并给出修改意见。 1. #include Test(int i,int j){x=i,y=j;} int getx(){return x;} int gety(){return y;} }; void main() {Test mt(10,20); cout< 答案:int x,y=20;在类内部不能对数据成员直接赋值。 [修改]int x,y; 2. #include fun(int i,int j) {x=i;y=j;} show() {cout<<\if(y) cout<<\cout< void main() {Test a; a.fun(1); a.show(); a.fun(2,4); a.show(); } 答案:int i,int j调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认 值。所以int i,int j错误。 [修改]int i,int j=0//注j只要有一个int类型的数据就行。 3. #include 6 ITAT—教育部教育管理信息中心 樊本宏 public: virtual void fun()=0; A(int a) {i=a;} }; class B:public A {int j; public: void fun() {cout<<\\n\ B(int m,int n=0):A(m),j(n){} }; void main() {A *pa; B b(7); pa=&b; } 答案:B(int m,int n=0):A(m),j(n){}因为基类是抽象类,不能被实例化,所以在派生类中不能 调用初始化基类对象。所以B(int m,int n=0):A(m),j(n){}错误,删去A(m)。 [修改]B(int m,int n=0):j(n){} 4. #include {cout< cout< void fun(X); }; void fun(X t) {cout< 答案:cout< Bas(char *s=\\0\void show(); protected: char name[20]; }; Bas b; void show() {cout<<\void main() 7 ITAT—教育部教育管理信息中心 樊本宏 {Bas d2(\show(); } 答案:void show();是普通函数不是成员函数,但是要访问类成员,需要定义为友元函数。 [修改]friend void show(); 四、完成程序题(本大题共5小题,每小题4分,共20分) 1. 在下面程序横线处填上适当字句,以使该程序执行结果为: 50 4 34 21 10 0 7.1 8.1 9.1 10.1 11.1 #include for (int i=0;i t=a[i], a[i]=a[n-1-i], a[n-1-i]=t; } void main () {int a[5]={10,21,34,4,50}; double d[6]={11.1,10.1,9.1,8.1,7.1}; f(a,5);f(d,6);
相关推荐: