-> -> ->
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.4B.3C.2D.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.###123B.123###C.***123D.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.=0B.=1C.=2D.=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.CBAB.BACC.ACBD.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.BASEB.DERIVEDC.BASEDERIVEDD.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
微信搜索关注"91考试网"公众号,领30元,获取公务员事业编教师考试资料40G