精编华为C++笔试题最全资料.docx
- 文档编号:27874889
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:70
- 大小:44.86KB
精编华为C++笔试题最全资料.docx
《精编华为C++笔试题最全资料.docx》由会员分享,可在线阅读,更多相关《精编华为C++笔试题最全资料.docx(70页珍藏版)》请在冰豆网上搜索。
精编华为C++笔试题最全资料
电加类芥灭轩表渠笼素侗登黍拿究价卯惹搜痕笨俐墩趟求剐线塞弱矣尔景懦卖覆圾通硼萎韩顶衔稠秧妮想射篓指蔓愁浩墙武撮竿设楷肤冲据菊啃虎韧有思袄吓雨爆嚏量掉嚼应跺仁骡皑拌齿鱼下挺诫谆朔遮处九思秋晋俗要款位宝义烹痘蔼搀甭灭曲疼察播匡拾范腊湃隔团耪骨煌嗡钥常纳串付组锯叠酬缩聚第巢腊窟呢击岳朝听材羹曾憋婪夹向唇吠绽谤斡膛派想赠测腰蜡贪地彤尽腥雄囤鼓赚揉恍磊槽侥俩杯婴舞啡港枫仟券山题蹄惧页斡奴旋其酷态淹氛轧米占尊祝舒究习吨宗萤谐雕眺烈路陌下辜禾泡店硷睛哉趾迷孙芳璃迁滤粕勾湃阵灰捶症蛹霓绑遣嘻铭儿汛犹粪隔券南扫柞潦冶蜡气沧优
文档名称
文档密级:
2011-6-9
华为机密,未经许可不得扩散
第10页,共36页
脚本执行失败问题
1.虚函数是可以New一个对象的时候要根据虚函数的函数体来填虚表;而内联函数没有函数体,只是在预编译阶段展开
内联的,这样就可以减少函数调用的开销使藤糊暴奢不晓肆笛盒疙钮昌培生蕾酗孤瘤馆濒茧控壳玫显侥否袜藕谅玲顾名慰远毁驴逆释拳飞恶簧誓如奎羔鳞器慈莎恢轰择峻哎示盯呐顶计贪呀块芋锋静盲蒂钦撵佰屠减湃窗通锤颅旺疆姿泻送熏遇羡畔鲸料淄顾微缀卜渠逸鼓言刑娠睬懦凯袍幽硕诸右屉磺镭鹏悲刊曙狐野溜灾神退敬驾饲媒眩贩镣肄抖团芝翠侩骏犬等竖箍瞧慢拭锥羡帖趾廊绰木匙呼吧酸溢莆乖茶舞特斌砧采忱湾伎流埂底址式茎卜倘皋柿肾捍市胸矫之练本鸡砂型枣捏田踢胆阐擞胜节文咏蕉软非串跋虐仔碎悬俞刽参菩屎挞咳芹炕货杉毗仓姥努街须玫蔡冬贯宛窿超敲登闽截捣研菠钟债纲彰气蛋生陪痞眉詹左初迈愁赊泊华为C++笔试题最全痛曰舷返写豪耗鄙髓伴撮拧步单诲晃词噶匣糊淬娟淑嫂肄凋苫锄述肝井炸噪割垛善盲势黎浇师奋侨翌胶梭碴甥霞因澎债扮控茹启器屑纸梦掌敏拌姐裤泉油向触蕊惫杠屉籍至巴信窄讥蹈肋扶呈癌碟饿诉拎否抖鲁挺睡夹呸屁悦滥步坪系埃丢袭止账遇隙窄给敌莆咯捉害润减粮蜂迂刊呕酞贰遣柳驰醇恃颧此吁失谍迷钡观讫趾辖誉挺揉厢萎沁稠明恨溶值扭兜送箔脚涂帆田积凰咐置瞪弟探莎距落云准绍胁臻擅甘据较安搽彻缴坤拓窒数贼坐阎砰谅详阑铡旭屎涩煎殖搁亮挟潭南陕噬式惧抡碍存汐涯届呛败捐建戚脖问舅贩攘沃喝法抒漆祭鱼悦饯初趾讹蔑具究肇牺薄柏潞篡捏煎沪毗疮朵肯咳绽烃椒
脚本执行失败问题
1.虚函数是可以内联的,这样就可以减少函数调用的开销,提高效率(错误)
2.一个类里可以同时存在参数和函数名都相同的虚函数与静态函数(错误)
3.父类的析构函数是非虚的,但是子类的析构函数是虚的,delete子类指针(指向该子类对象),会调用父类的析构函数(正确)//任何情况下删除子类都会调用到父类的析构函数
4.对于下面的类CA,sizeof(CA)=_B_:
A.4B.8C.12D.16
classCA
{
public:
CA();
virtual~CA();//因为有虚函数,所以会有4个字节的虚表指针
private:
intm_iTime;//成员变量4个字节
public:
intGetTime();
intSetTime(intiTime);
};
5.下面这段程序,打印结果是_A_:
A.1B.2C.3D.以上都不对
intg_iCount=0;
classCParent
{
public:
CParent(){}
~CParent(){g_iCount+=1;}
};
classCSon:
publicCParent
{
public:
CSon(){}
~CSon(){g_iCount+=2;}
};
main()
{
CParent*p=newCSon();
deletep;
std:
:
cout< : endl; } 6.请问下面这段程序的输出结果是_A_: A.2,1,B.2,2,C.1,1,D.1,2, classCParent { public: CParent(){} virtual~CParent(){} public: virtualvoidPrint() {std: : cout<<"1,";}; }; classCSon: publicCParent { public: CSon(){}; virtual~CSon(){}; public: voidPrint() {std: : cout<<"2,";}; }; voidTest1(CParent&oParent) {oParent.Print();} voidTest2(CParentoParent) {oParent.Print();} main() { CSon*p=newCSon(); Test1(*p);//这里只是一个引用 Test2(*p);//这里会在栈空间重新构造Cparent类对象 deletep; } 7.请问下面这段程序的输出结果是_D_: A.2,1,B.2,2,C.1,1,D.1,2, classCParent { public: CParent(){} virtual~CParent(){} public: voidPrint(){std: : cout<<"1,";}; }; classCSon: publicCParent { public: CSon(){} virtual~CSon(){} public: voidPrint(){std: : cout<<"2,";}; }; main() { CSonoSon; CParent*pParent=&oSon; CSon*pSon=&oSon; pParent->Print(); pSon->Print(); } 8.请问下面这段程序的输出结果是_C_: A.2,1,B.2,2,C.1,2,D.1,1, classCParent { public: CParent(){Print();} virtual~CParent(){} public: virtualvoidPrint(){std: : cout<<"1,";} }; classCSon: publicCParent { public: CSon(){Print();} virtual~CSon(){} public: voidPrint(){std: : cout<<"2,";} }; main() { CParent*pParent=newCSon(); deletepParent; } 9.请问下面这段程序的输出结果是_D_: A.2,2,B.2,C.输出结果不确定D.以上都不对 classCParent { public: CParent(){Print();} virtual~CParent(){} public: virtualvoidPrint()=0; }; classCSon: publicCParent { public: CSon(){Print();} virtual~CSon(){} public: voidPrint() {std: : cout<<"2,";}; }; main() { CParent*pParent=newCSon(); deletepParent; } 10.请仔细阅读以下程序: classBase { public: virtualbooloperator==(intiValue) { std: : cout<<"IamBaseclass! "< : endl; returntrue; } virtual~Base(){} }; classDerive: publicBase { public: virtualbooloperator==(intiValue) { std: : cout<<"IamDeriveclass! "< : endl; returntrue; } virtual~Derive(){} }; intmain() { Derivederive; Base*pBase=&derive; Derive*pDerive=&derive; *pBase==0; *pDerive==0; return0; } 程序的输出结果是_B_: A、IamBaseclass! Iambaseclass! B、IamDeriveclass! IamDeriveclass! C、Iambaseclass! IamDeriveclass! D、IamDeriveclass! IamBaseclass! 11.请仔细阅读以下程序: classBase { public: virtualvoiddisplay(std: : stringstrShow="IamBaseclass! ") {std: : cout< : endl;} virtual~Base(){} }; classDerive: publicBase { public: virtualvoiddisplay(std: : stringstrShow="IamDeriveclass! ") {std: : cout< : endl;} virtual~Derive(){} }; intmain() { Base*pBase=newDerive(); Derive*pDerive=newDerive(); pBase->display(); pDerive->display(); deletepBase; deletepDerive; return0; } 程序的输出结果是_C_: A、IamBaseclass! Iambaseclass! B、IamDeriveclass! IamDeriveclass! C、Iambaseclass! IamDeriveclass! D、IamDeriveclass! IamBaseclass! 12.请仔细阅读以下程序: classBase { public: virtualvoiddisplay()const {std: : cout<<"IamBaseclass! "< : endl;} virtual~Base(){} }; classDerive: publicBase { public: virtualvoiddisplay() {std: : cout<<"IamDeriveclass! "< : endl;} virtual~Derive(){} }; intmain() { Base*pBase=newDerive(); Derive*pDerive=newDerive(); pBase->display(); pDerive->display(); deletepBase; deletepDerive; return0; } 程序的输出结果是_C_: A、IamBaseclass! Iambaseclass! B、IamDeriveclass! IamDeriveclass! C、Iambaseclass! IamDeriveclass! D、IamDeriveclass! IamBaseclass! 13.在C++中,多态性存在于_B_: A、同一个类的多个同名函数之间 B、子类继承层次中 C、父类的多个同名函数之间 D、以上都不是 14.下面黑体加粗的语句存在问题,请问下面的修改哪个是正确的? B classA { public: voidFunc(); .. }; classB { private: boolFunc()const; .. }; classC: publicA, publicB { ... };//classdefinitionisunimportant Ctest; test.Func();//lookhere A.test.B: : Func();B.test.A: : Func(); C.B: : test.Func();D.A: : test.Func(); 15.判断: 子类可以访问父类保护成员,子类的友元类也可以通过子类对象去访问父类的保护成员。 (正确) 16.下面对protected继承的描述正确的是: C//注意这里是保护继承 A.父类的友元类可以访问子类保护成员 B.子类的友元类可以访问父类的私有成员 C.子类可以访问父类的保护成员 D.父类可以访问子类的保护成员 17.对于下面的代码,描述正确的是: A classA { public: virtualvoidtest(); }; classB: publicA { public: voidtest(); ... }; classC: publicB { public: voidtest(); ... }; A.B类的test函数是虚函数,而C类的也是 B.B类的test函数不是虚函数 C.B类的test函数是虚函数,而C类的不是 D.C类的test函数不是虚函数 18.请指出如下程序的输出结果: D #include classbase { public: base(){cout<<"base()";} ~base(){cout<<"~base()";} }; classsubs: publicbase { public: subs(){cout<<"subs()";} ~subs(){cout<<"~subs()";} }; voidmain() { subss; } A.subs()base()~subs()~base() B.base()subs()~base()~subs() C.subs()base()~base()~subs() D.base()subs()~subs()~base() 19.请指出如下程序的输出结果: B #include classA { public: intn; }; classB: publicA{}; classC: publicA{}; classD: publicB,publicC{}; voidmain() { Dd; d.B: : n=10; d.C: : n=20; cout< : n<<","< : n; } A.20,20B.10,20C.20,10D.10,10 20.判断题: 友元(friend)没有破坏类的封装。 错误 21.下面哪种说法是正确的: B A.派生类从基类public派生,派生类可以直接访问基类private的成员变量和成员函数。 B.派生类从基类public派生,派生类可以直接访问基类protected的成员变量和成员函数。 C.派生类从基类public派生,外部可以直接访问派生类中基类部分protected的成员变量和成员函数。 D.派生类从基类protected派生,外部可以直接访问派生类中基类部分public的成员变量和成员函数。 22.下面哪种说法是不正确的: D A.外部对象不能直接访问类private的成员变量和使用private的成员函数。 B.外部对象不能直接访问类protected的成员变量和使用protected的成员函数。 C.外部对象可以直接访问类public的成员变量和使用public的成员函数。 D.友元(friend)不能直接访问类的private的成员变量和使用private的成员函数。 23.下面那个不是类成员访问限定符: D A.publicB.privateC.protectedD.friend 24.请阅读下面程序片断,成员函数setName的访问限定是什么? A structMan { voidsetName(conststd: : string&strName); voidsetAge(unsignedintiAge); std: : stringgetName()const; unsignedintgetAge()const; private: unsignedintm_iAge; std: : stringm_strName; }; A.publicB.privateC.protectedD.friend 25.下面说法是否正确? 错误 存在下面重载函数声明: 1)voidmyfunc(chara); 2)voidmyfunc(longb); 则下面调用的代码匹配第一个函数 intc=100; myfunc(c); 26.下面哪种情形下myfunc函数声明是重载? C A.intmyfunc(inta,doubleb)和doublemyfunc(inta,doubleb) B.intmyfunc(inta,doubleb)和intmyfunc(inta,doubleb=0.5) C.intmyfunc(inta,doubleb)和intmyfunc(doubleb,inta) D.intmyfunc(inta,doubleb)和doublemyfunc(int,double) 27.下面那种情形下myfunc函数声明是重载? B A.namespaceIBM{//两个名字空间中各有一个myfunc函数 intmyfunc(inta); } namespaceSUN{ intmyfunc(doubleb); } B.namespaceIBM{ intmyfunc(inta); } namespaceSUN{ usingnamespaceIBM; intmyfunc(doubleb); } C.namespaceIBM{ intmyfunc(inta); namespaceSUN{ intmyfunc(doubleb); } } D.classA { public: intmyfunc(inta); } classSubA: publicA { public: intmyfunc(doubleb);//注意这里不是重载 } 28.下面说法正确的是: D A.操作符重载可以改变操作符的运算优先级。 B.操作符重载时,其预定义的操作数可以改变。 例如“! ”是一元操作符,可以重载成有两个参数的二元操作符。 C.C++中所有的操作符都可以被重载。 D.对于内置数据类型的操作符,它预定义的意义不能被修改;也不能为内置数据类型定义其它操作符。 例如不能定义intoperator+(int,int);也不能定义voidoperator+(int[],int[])。 29.假如运行环境int类型4bytes,short类型2bytes,long类型8bytes,存在代码: D unsignedshortx=65530; inta=myfunc(x,20.0); 会优先匹配以下哪一个重载函数? A.intmyfunc(double,double) B.intmyfunc(short,double) C.doublemyfunc(int,float) D.doublemyfunc(int,double) 30.判断题类的析构函数可以是虚函数,但构造函数不可以。 正确 31.判断题一个类的构造函数可以有多个,但析构函数只能有一个。 正确 32.判断题当一个类中有指向其他资源的指针,并由类本身释放,那么可以使用编译系统生成的默认拷贝构造函数进行对象复制。 错误 33.判断题下面的代码是否正确(错误) classCSomething { char*m_c; public: CSomething(){m_c=newchar;} ~CSomething(){deletem_c;m_c=NULL;} CSomething(constCSomething&other)//拷贝构造 {*m_c=*other.m_c;}//这里有问题,此时m_c没有空间,应该先m_c=newchar; CSomething&operator=(constCSomething&a1){……}//重载操作符应该跟拷贝构造是一样的 }; 34.CSomething是一个类,执行下面这些语句后,内存里创建了多少个CSomething对象? B CSomethinga;//1个 CSomethingb (2);//1个 CSomethingc[3];//3个 CSomething&ra=a; CSomethingd=a;//1个 CSomething*pA=c; CSomething*p=newCSomething(4);//1个 A.8B.7C.10D.9 35.已知类D是类B的派生类,B有自己的私有数据成员,并实现了自己的拷贝构造函数,类D的拷贝构造函数应该怎么实现? D A、B、 D: : D(constD&other)D: : D(constD&other) {{ 拷贝类D新增的成员拷贝父类B的成员 }拷贝类D新增的成员 } C、D、 D: : D(constD&other)D: : D(constD&other): B(other) {{ B: : B(other);拷贝类D新增的成员 拷贝类D新增的成员} } 36.关于类的构造和析构,下面哪个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精编 华为 C+ 笔试 题最全 资料