电话:0731-83595998
导航

2018年12月计算机二级C++提分练习题及答案(4)

来源: 2018-11-28 14:38

   选择题

 
  1.可以用P.a的形式访问派生类对象P的基类成员a,其中a是(  )。
 
  A.私有继承的公有成员
 
  B.公有继承的私有成员
 
  C.公有继承的保护成员
 
  D.公有继承的公有成员
 
  2.下面程序的运行结果为(  )。
 
  #include
 
  classA
 
  {
 
  intnum;
 
  public:
 
  A(inti){num=i;)
 
  A(A&a){num=a.num++;}
 
  voidprint(){cout<  };
 
  voidmain()
 
  {
 
  Aa(1),b(a);
 
  a.print();
 
  b.print();
 
  }
 
  A.11B.12
 
  C.21D.22
 
  3.设有定义charstr[80];以下不能将输入数据firstnsecondn读取到数组str中的语句是(  )。
 
  A.cin.get(str,strlen(str));
 
  B.cin.getline(str,strlen(str));
 
  C.cin>>str;
 
  D.cin.read(str,strlen(str));
 
  4.下列程序的输出结果为(  )。
 
  #include
 
  classTestClass
 
  {
 
  public:
 
  TestClass(){val++;}
 
  static,intval;
 
  };
 
  intTestClass::val=0;
 
  voidmain()
 
  {
 
  TestClasscsl;
 
  cout<  TestClasscs2;
 
  TestClasscs3,cs4;
 
  cout<  }
 
  A.O3
 
  B.13
 
  C.14
 
  D.24
 
  5.有以下类定义:
 
  classMyClass
 
  {
 
  private:
 
  intid;
 
  chargender;
 
  char*phone;
 
  public:
 
  MyClass():id(0),gender(’#’),phone(NULl){}
 
  MyClass(intn0,charge=’#’,char*ph=NULL)
 
  {id=no;gender=ge;phone=ph;}
 
  };
 
  下列类对象定义语句中错误的是(  )。
 
  A.MyClassmyObj;
 
  B.MyClassmyObj(11,"13301111155");
 
  C.MyClassmyObj(12,’m’);
 
  D.MyClassmyObj(12);
 
  6.下列是关于派生类声明的开始部分,其中正确的是(  )。
 
  A.classvirtualB:publicA
 
  B.virtualclassB:publicA
 
  C.classB:publicAvirtual
 
  D.classB:virtualpublicA
 
  7.如果类A被说明成类B的友元,则(  )。
 
  A.类A的成员即类B的成员
 
  B.类B的成员即类A的成员
 
  C.类A的成员函数不得访问类B的成员
 
  D.类B不一定是类A的友元
 
  8.下列关于虚基类的描述,错误的是(  )。
 
  A.设置虚基类的目的是为了消除二义性
 
  B.虚基类的构造函数在非虚基类之后调用
 
  C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
 
  D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
 
  9.下列关于多态性的描述,错误的是(  )。
 
  A.C++语言中的多态性分为编译时的多态性和运行时的多态性
 
  B.编译时的多态性可通过函数重载实现
 
  C.运行时的多态性可通过模板和虚函数实现
 
  D.实现运行时多态性的机制称为动态绑定
 
  10.若有如下程序:
 
  #include
 
  usingnamespacestd;
 
  classTestClassl
 
  {
 
  private:
 
  inta;
 
  public:
 
  TestClassl(inti)
 
  {
 
  a=i:
 
  }
 
  voiddisp(  )
 
  {
 
  cout<  }
 
  };
 
  classTestClass2
 
  {
 
  private:
 
  intb:
 
  public:
 
  TestClass2(intj)
 
  {
 
  b=j;
 
  }
 
  voiddisp()
 
  {
 
  cout<  }
 
  };
 
  classTestClass3:publicTestClass2,publicTestClassl
 
  {
 
  private:
 
  intc;
 
  public:
 
  TestClass3(intk):TestClass1(k-2),TestClass2(k+2)
 
  {
 
  c=k:
 
  }
 
  voiddisp()
 
  {
 
  TestClasssl::disp();
 
  TestClasss2::disp();
 
  cout<  }
 
  };
 
  intmain()
 
  {
 
  TestClass30bj(10);
 
  obj.disp();
 
  return0;
 
  }
 
  程序执行后的输出结果是(  )。
 
  A.10,10,10
 
  B.10,12,14
 
  C.8,10,12
 
  D.8,12,10
 
  参考答案:
 
  1.D。【解析】只有公有继承的公有成员才能被派生类的对象直接访问,其他的情况都会因为访问权限问题产生错误。
 
  2.C。【解析】本题考查考生对拷贝构造函数的掌握。因为++运算是右结合的,所以在使用a对b赋值时,b的hum变为1,而a的num变为2(先赋值再自加)。
 
  3.D。【解析】本题考查cin流对象的几种成员函数get,getline,read及流提取符>>的使用规则。
 
  4.C。【解析】由主函数main入手,定义TestClass类的对象cs1,执行cs1.va1,其中va1为静态变量,根据intTestClass::val=0;初始化,TestClass中的TestClass(){val++;}构造函数执行后,val值为1。主函数中接着定义对象cs2,cs3,cs4。执行cout<  25.B。【解析】本题考查构造函数的应用。对象建立用初始化列表对数据成员进行时。列表中的参数类型要与构造函数中形参类型一致。B选项中第二个参数为13301111155,是字符串,而构造函数中第二个形参为char型,两者不一致造成错误。
 
  6.D。【解析】声明派生类的一般形成为class派生类名:[继承方式]基类名。其中继承方式包括public、private和protected。而virtual为C++中的关键字,所以选项C错。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。
 
  7.D。【解析】本题考查的是友元类的定义:类A为类B的友元类,则类A的所有成员函数都是类B的友元函数,但反之则不一定成立。
 
  8.B。【解析】虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行。
 
  9.C。【解析】编译时的多态性是通过函数重载和模板体现的,运行时的多态性是通过虚函数体现的。
 
  10.D。【解析】首先定义TestClass3的对象obj,参数为10。其中TestClass3为TestClass1和TestClass2的派生类。然后调用disp成员函数。disp中首先执行TestClassl::disp();,然后执行TestClass2::disp();,最后执行输出语句cout<

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端