面向对象程序设计线上考核.docx
面向对象程序设计线上考核.以下的各类函数中,()不是类的成员函数。单项选择题*构造函数析构函数友元函数(正确答案)复制构造函数1 .作用域运算符:的功能是()单项选择题*标识作用域的级别指出作用域的范围正确答案)给定作用域的大小标识成员属于哪个类.:print。函数是一个类的常成员函数,它无返回值,以下表示中()是正 确的。单项选择题*void print () const(正确答案)const void print ()void const print ()void print (const)2 .在类定义的外部,可以被访问的成员有()单项选择题*所有类成员private的类成员public的类成员(正确答案)public或private的类成员class complexdouble real;。实部double imag;/虚部public:complex( double r; double i):real(r),imag(i)complex operator + (complex a)(return complex();)填空题*(答案:real+a.real,image+a.imag)30.下面的程序定义了一个类求n !,并输出5 !的值。请补充完整:#include<iostream> class CFactorial (public:CFactorial(int n)num = n;total = 1;)void calculate()(int n = num;while(n>0)total *= n-;void display()cout«num«r,! = r,«total«endl; private:int num;long total;;int main()CFactorial f(5);f.display();return 0;填空题*(答案:f.calculate。)3 .关于类和对象不正确的说法是()单项选择题*类是一种类型,它封装了数据和操作一个类只能有一个对象正确答案)一个对象必属于某个类对象是类的实例. C+实现封装是借助于()单项选择题*枚举数组函数类(正确答案)4 .函数原型void test (int a, int b=7,char ch="*"),下面的函数调用中,属于不合 法调用的是()单项选择题*test(5)test(6,"#”)(正确答案)test(5,8)test(O,O,"*").:intm=10;以下表示引用的方法中,正确的选项是()单项选择题*int & z ;int & t=10 ;int & x=m ;(正确答案)int & f=&m ;5 .定义析构函数时,应注意()单项选择题*名字与类名完全相同无形参,也不能重载正确答案)返回类型为void函数体中必须有delete语句.以下不是函数重载所要求的条件是:()单项选择题*函数名相同参数个数不同参数类型不同函数返回值类型不同(正确答案)6 .下面关于友元的描述中,错误的选项是:单项选择题*友元函数可以直接该类的私有成员一个类的友元类中的所有成员函数都是这个类的友元函数 利用友元可以提高程序的运行效率,但却破坏了封装性 友元关系不能被继承,但是可以双向交换正确答案).以下关于this指针的表达正确的选项是:单项选择题*任何与类相关的函数都有this指针类的成员函数都有this指针类的友元函数都有this指针类的非静态成员函数才有this指针(正确答案)7 .关于const关键字说法错误的选项是:单项选择题*const关键字可以修饰对象和成员函数const成员函数不能修改类数据成员const对象不能被修改const可以用于说明类(正确答案)8 .在C+中执行以下4条语句后输出rad值为:static int hot=200 ;int &rad=hot ;hot=hot+100 ;cout«rad«endl ;单项选择题*0100300(正确答案)2009 .类class CC的说明如下,错误的语句是:class CCint a=2 ;/ACC () ;/Bpublic :CC (int val);/CCC () ;/D;单项选择题*语句A(正确答案)语句B语句C语句D10 .在C+中,一个函数为void f(int=l,char=,a),另一个函数为void f(int),那么它们单 选题*A)不能在同一程序中定义B)可以在同一程序中定义并可重载正确答案)C)可以在同一程序中定义,但不可重载D)以上说法都不正确.下面对静态数据成员的描述中,正确的选项是单项选择题*A)静态数据成员是类的所有对象共享的数据(正确答案)B)类的每个对象都有自己的静态数据成员C)类的不同对象有不同的静态数据成员值D)静态数据成员不能通过类的对象调用11 .如果将口运算符重载成一个类的成员函数,那么该重载函数有几个参数?单项选择 题*A)0B) 1(正确答案)C)2D) 3.在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重 载的运算符。以下表达中正确的选项是()单项选择题*A) operator+有两个参数,operator*有两个参数B) operator+有两个参数,B) operator+有两个参数,operator*有一个参数C) operator+有一个参数,C) operator+有一个参数,operator*有两个参数1正D) operator+有一个参数,operator*有一个参数19 .如何区分自增运算符重载的前置形式和后置形式?单项选择题*A)重载时,前置形式的函数名是+ operator,后置形式的函数名是operator +B)后置形式比前置形式多一个int类型的参数(正确答案)C)无法区分,使用时不管前置形式还是后置形式,都调用相同的重载函数D)前置形式比后置形式多了一个int类型的参数 21,以下运算符中,不能重载的是()单项选择题*?:(正确答案)+<=22 .不能用友员函数重载的是()单项选择题*二(正确答案)+.下面程序片段输出结果是什么?int a = l,b = 2;int & r = a;r = b;r = 7;cout « a « endl;单项选择题*127(正确答案)8.类A定义如下:class A int v;public:A(int i) v = i; A() );下面哪段程序不会引发类型转换构造函数被调用?单项选择题*A al(4);Aal,a2;al =a2;(正确答案)A a3; a3 = 9;A a2 = 4;23 .假设A是一个类的名字,下面哪段程序不会用到A的复制构造函数?单项选择题 *A func() A tmp; return tmp; A al,a2; al = a2;(正确答案)A al; A a2(al);void func( A a) cout « "good" « endl; . #include<iostream>class example(private:static int num;public:example()num+;cout«num«n n;-example()num;cout«num«H n;);int example: :num=l;void main()example object1;example object2;)上面C + +程序的输出结果是单项选择题*A)1 1 1 1B)2 1 2 1C)2 2 3 2D)2 3 2 1(正确答案)E)1 2 1 224 .有如下程序:执行后的输出结果应该是:#include<iostream.h>class clastatic int n;public:cla()n+;cla()n-;static int get_n()return n;int cla:n=O;int main()(cla * p二new cla;delete p;cout«nn=H«cla:get_n()«endl ;return 0 ;单项选择题*n=0(正确答案)n=ln=3n-425 . class wheel(int num;public:wheel (int w)num=w;);class car|wheel carWheel;public:/写出car的构造函数)在C+中,上面程序中,空白处正确的语句是单项选择题*void car(int n):carWheel(n)A) car(int n): carWheel(n) E确答案)void car(int n): carWheel(n)B) car(int n): carWheel(n) 29.下面是复数类complex的定义,其中重载的运算符的功能是返回一个新的 复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之 和;请补充完整: