2010计算机等级考试二级(C++)笔试126(三)

时间:2011-01-15 09:59:46

微信搜索关注"91考试网"公众号,领30元,获取事业编教师公务员等考试资料40G
} int get()const {return k; } }; class MyDERIVED: protected MyBASE { Protected: int j; public: void set(int m,int n){MyBASE:: set(m);j=n;} int get () const {return MyBASE:: get ()+j; } }; 则类MyDERIVED 中保护的数据成员和成员函数的个数是______ 。

A.4

B.3

C.2

D.1

参考答案: C

由于是保护继承,基类的公有成员变成保护成员,set(int n)变成保护成员函数,而 get()const 被重载,为公有成员,j为新定义的保护成员,所以数据成员和成员函数的个数是C。

----------------------------------------

24、已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是______ 。

A.这是运算符―的重载运算符函数

B.这个函数所重载的运算符是一个一元运算符

C.这是一个成员函数

D.这个函数不改变类的任何数据成员的值

参考答案: A

重载的是一个二元运算符“一”,所以此题选择A。

----------------------------------------

25、 有如下函数模板定义: template<class T> T func (T x,T y){return x*x+y*y;} 在下列对func 的调用中,错误的是______ 。

A.fuc(3,5);

B.fuc(3.0,5.5);

C.fuc(3,5.5);

D.fuc<it>(3,5.5);

参考答案: C

在C的调用过程中,func(3,5.5)由于参数的类型不一致,不能判别两个参数的类型,发生错误。

----------------------------------------

26、 有如下程序: #include<iostream> using namespace std; int main() { cout.fill(''''*''''); cout.width (6); cout.fill(''''#''''); cout<<123<<end1; return 0; } 执行后的输出结果是______ 。

A.###123

B.123###

C.***123

D.123***

参考答案: A

根据定义,开始设置的coutfill.(‘*’),被后面的cout.fill(‘#’)替代,所以cout的输出结果是###123。

----------------------------------------

27、在下列函数原型中,可以作为类AA构造函数的是______ 。

A.void AA(it);

B.it AA();

C.AA (it)cot;

D.AA(it)

参考答案: D

如果作为类AA构造函数不能有返回值,排除答案A、B,而且不能是常函数,所以选择D。

----------------------------------------

28、下列关于this 指针的叙述中,正确的是______ 。

A.任何与类相关的函数都有thi指针

B.类的成员函数都有thi指针

C.类的友元函数都有thi指针

D.类的非静态成员函数才有thi指针

参考答案: D

类的非静态成员函数才有this指针。

----------------------------------------

29、 有如下程序: #include <iostream> using namespace std; class Test { public: Test() {n+=2;} ~Test() {n-=3;} static int getNum(){retum n;} private: static int n; }; int Test:: n=1; int main() { Test*p=new Test; delete p; cout<<n=<<Test:: getNum()<<end1; return 0; }; 执行后的输出结果是______.

A.=0

B.=1

C.=2

D.=3

参考答案: A

经过一次构造函数和析构函数的调用后,执行后的输出结果是A。

----------------------------------------

30、 有如下程序: #include <iostream> using namespace std; class A { public: A() {cout<<A;} }; class B {public:B() {cout<<B;}}; class C: public A { Bb; public: C() {cout<<C;} }; int main() {C obj;return 0;} 执行后的输出结果是 ______。

A.CBA

B.BAC

C.ACB

D.ABC

参考答案: D

在构造派生类对象时,基类的构造函数要优于派生类的构造函数先执行,所以D为正确答案。

----------------------------------------

31、 有如下类声明: class XA { int x; public: XA(int n) {x=n;} }; class XB: public XA{ int y; public: XB(int a,int b); }; 在构造函数XB的下列定义中,正确的是______。

A.XB:: XB(it a, it ):x(a),y() { }

B.XB::XB(it a, it ):XA(a),y(){}

C.XB::XB(it a,it ):x(a),XB()i}

D.XB::XB(it a,it ):XA(a),XB(){}

参考答案: B

构造函数的定义过程中,初始化基类成员,只能通过调用基类构造函数,所以答案选择B。

----------------------------------------

32、 有如下程序: #include <iostream> using namespace std; class BASE{ public: ~BASE() {cout<<BASE; } }; class DERIVED: public BASE { public: ~DERIVED() {cout<;DERIVED; } }; int main(){DERIVED x; return 0;} 执行后的输出结果是______ 。

A.BASE

B.DERIVED

C.BASEDERIVED

D.DERIVEDBASE

参考答案: D

析构函数的调用顺序是,先调用派生类的析构函数,再调用基类的析构函数。

----------------------------------------

33、在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是______ 。

A.oerator+有两个参数,oerator*有两个参数

B.oezator+有两个参数,oerator*有一个参数

C.oerator+有一个参数,oerator*有两个参数

D.oerator+有一个参数,oerator*有一个参数

参考答案: C

operator+ 作为成员函数重载,本身便是一个参数,所以只有一个参数,而*是作为非成员函数重载,需要两个参数,此题选择C。

----------------------------------------

34、下面关于C++流的叙述中,正确的是______ 。

A.ci是一个输入流对象

B.可以用iftream 定义一个输出流对象

C.执行语句序列char*y=“PQM

首页 上页 2 3 4 下页 尾页 3/4/4
微信搜索关注"91考试网"公众号,领30元,获取公务员事业编教师考试资料40G
【省市县地区导航】【考试题库导航】

电脑版  |  手机版  |  返回顶部