金山软件2015年C++工程师笔试试题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2011珠海金山办公软件WPS Office C++开发工程师笔试试题 (考试时间:120分钟) 姓 名: 性 别: 学 历: 毕业学校: 所学专业: 手 机: 电子邮件: 1、请描述C++的如下语法特性和常用场景,并给出代码实例: 虚析构函数 虚继承 关键字mutable (1)虚析构函数可以确保派生类对象在不同状态下正确调用基类和派生类的析构函数,释放派生类对象的所有资源。 #includeiostream.h class A{ public: virtual ~A(){ coutA::~A() is calledendl; } }; class B:public A{ public: ~B(){ coutB::~B() is calledendl; } }; void main(){ A *p1=new B; B *p2=new B; coutFirstendl; delete p1; coutSecondendl; delete p2; } (2)虚继承可以避免具有多层次继承结构的派生类重复调用同一基类的构造函数,产生多个相同成员副本,造成不必要的空间浪费和产生访问的二义性。 #includeiostream.h class Base{ public: Base(int x=10){ base=x; coutBase::Base()endl; } ~Base(){ coutBase::~Base()endl; } int base; }; class A:virtual public Base{ public: A(int x=11,int y=21):Base(x){ a=y; coutA::A()endl; } ~A(){ coutA::~A()endl; } int a; }; class B:virtual public Base{ public: B(int x=12,int y=22):Base(x){ b=y; coutB::B()endl; } ~B(){ coutB::~B()endl; } int b; }; class C:public A,public B{ public: C(int i=1,int j=2,int k=3,int h=4):Base(i),A(j),B(k){ c=h; coutC::C()endl; } ~C(){ coutC::~C()endl; } int c; }; void main(){ C cc; coutcc.base=cc.baseendl; coutcc.a=cc.aendl; coutcc.b=cc.bendl; coutcc.c=cc.cendl; A aa; coutaa.base=aa.baseendl; coutaa.a=aa.aendl; } (3)被const修饰的函数无法修改其中的成员变量,但是如果函数里面某个成员变量被mutable修饰,则该成员变量可以被const修饰的函数修改。 #includeiostream.h class A{ public: mutable int a; void f(int x)const{ a=x; } }; void main(){ A aa; aa.a=10; coutaa.aendl; aa.f(20); coutaa.aendl; } 2、改错 请阅读以下两段代码,并指出以下代码中存在的问题或隐患。 提示:程序可能有编译错误。 第一题 class Shape { public: virtual void Draw() = 0; }; class Circle: public Shape{ int m_x, m_y, m_r; public: Circle() { memset(this, 0, sizeof(*this)); } void SetCenter(int x, int y) { m_x = x; m_y = y; } void SetRadius(int r) { m_r = r; } void Draw(bool bFill = false) { ... /* 代码略 */ } }; ... // 其他的一些 Shape 派生类 void wmain(){ vectorShape shapes; ... // 从文件中读入 Shap

文档评论(0)

gujf + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档