2014年中兴移动校园招聘C++试题(60分钟)一.单选题1.下列关于派生类的描述中,不正确的是()A.派生类除了包含它自己的成员外,还包含基类的成员B.派生类中继承的基类的成员的访问权限在派生类中保持不变C.派生类至少有一个基类D.一个派生类可以作为另一个派生类的基类2.运算符重载是对已有的运算符赋予多重含义,下列正确的是()A.可以对基本类型(如int型)的数据重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作个数C.只能重载C++中已有的运算符,不能定义新运算符D.C++中已经有的运算符都可以重载3.下面其中一个指针p受const限制的含义与另外两个不一样的是()A.constchar*p;B.charconst*p;C.char*constp;4.下列关于构造函数的描述中错误的是()A.构造函数可以设置默认参数B.构造函数在定义类对象时自动执行C.构造函数可以使内联函数D.构造函数不可以重载5.关于虚函数,下列说法不正确的是()A.虚函数是动态联编的基础B.虚函数的定义只能出现在类定义中的函数原型声明中C.类的成员函数均可声明为虚函数D.虚函数是用virtual关键字声明的非静态成员6.下面的说法错误的是()A.Static成员函数没有this指针B.Static成员函数不能直接访问非static成员C.Static数据成员不能再类的定义中初始化D.Static数据成员独立于该类的任意对象而存在,不是该类类型对象的组成部分7.若用数组名作为函数调用的实参,则传递给形参的是()A.数存储首地址B.数组第一个元素的值C.数组元素的个数D.数组中全部元素的值8.使用场景是:对象数量变化少,高效的随机读取,不在乎插入和删除的效率,应该选择如下哪个stl容器?()A.vectorB.listC.dequeD.map9.关于析构函数,下面说法不正确的是()A.析构函数用来完成对象被删除前的一些清理工作B.析构函数可以声明为重载函数C.析构函数可以声明为虚函数D.析构函数在对象的生存期即将结束时被系统自动调用10.见下面注释处,会导致编译错误的地方是()classTest;classBase{protected:intmltem;private:intmCount;friendclassTest;};classSub:publicbase{public:voidTest(constSub&sub,constBase&base){inti=mltem;(A)i=sub.mltem;(B)i=base.mltem;(C)}};classTest{public:intCount(constBase&base){returnbase.mCount;(D)}}二.填空题1.以下代码,变量j还是变量k先被初始化classX{public:X(inta,intb):k(a),j(b){}private:intj;intk;};2.class和struct的主要区别是;3.使用dynamic_cast操作正确的前提是;4.C++通过实现多态,通过和来实现静态多态;5.会在main函数之前执行。6.C++编译器会为下面的base类编写的函数有,,,;Classbase{};已存在basea;调用baseb=a的时候会调用以上哪些函数?7.TESTA.h头文件需要使用到TESTB.h头文件能中的TestB类,以下哪种方式比较好,原因是;方式A:#includeTestB.hclassTestA{TestB*m_p;};方式B:classTestB;classTestA{TestB*m_p;};三.编程题1.求二叉树的深度sruuctTreeNode{TreeNode*left;TreeNode*right;};intget_height(TreeNode*root){完成函数体}2.二维平面上有若干点,求出一条直线能穿越最多的点#includehash_mapusingnamespacestd;structPT{floatx;floaty;};structLINE{boolbVertical;floatk;//斜率floatb;//直线为y=kx+b;};boolequal(floatx,floaty){return(x-y)=-0.00000001&&(x-y)=0.00000001;}LINEfindLine(PTpts,intn){补充完整}