C++基础考试完整版_第1页
C++基础考试完整版_第2页
C++基础考试完整版_第3页
C++基础考试完整版_第4页
C++基础考试完整版_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++基础测试一:选择题(每题2分,其29题)1.关于类和对象不正确的是(C)A:类是一种类型,它封装了数据和操作B:对象是类的实例C:一个类的对象只有一个D:一个对象必属于某个类2.在类定义的外部去访问类中的成员,类中的成员可以被访问的有(C)(友元除外)A:所有类成员B:private或protected成员C:public成员D:public或private成员3.关于this指针的说法错误的是(A)A:this必须显示说明B:构造函数中可以使用thisC:成员函数可使用thisD:静态成员函数不拥有this指针4.声明一个类的对象时,系统自动调用(B)函数A:成员函数B:构造函数C析构函数D普通函数5.下面对构造函数的不正确描述是(B)A:系统可以提供默认的构造函数B构造函数可以有参数,所以可以有返回值C:构造函数可以重载D构造函数可以设置默认参数值6.下面对析构函数的正确描述是(C)A:系统不能提供析构函数B析构函数必须由用户定义C析构函数没有参数D析构函数可以设置默认参数值7.对静态成员<static修饰的成员>的不正确描述是(C)A:静态成员不属于对象,是类的其享成员B:静态数据成员要在类外定义和初始化C:调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D:非静态成员函数也可以访问静态数据成员8.下面选项中,不是类的函数为(C)A:构造函数B:析构函数C:C函数D缺省参数的构造函数9.下面对友元的错误描述是(D)A)关键字friend用于声明友元B)一个类的成员函数可以是另一个类的友元成员函数C)友元成员函数访问对象的成员不受访问权限修饰符影响D)C函数可以通过this指针访问对象成员10.在c++中,类与类之间的继承关系具有(C)A自反性B)对称性C传递性D)反对称性11.下列关于类的继承描述中,(A)是错误的A)派生类一定可以访问基类的所有数据成员,也能调用基类的所有成员函数B)基类全部属性和方法与派生类不一定相同C)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D)一个基类可以有多个派生类,一个派生类可以有多个基类12.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的(A)A)public成员B)private成员C)protected成员D)友元13.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成成员成为派生类的(B)A)public成员B)private成员C)protected成员D)友元14.下面描述中,错误的是(B)A)在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问B)在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问C)在基类定义的public和protected成员在保护继承的派生类中可见D)private成员在类外函数中被访问,类外函数需要进行友元访问声明15.在C++中,一定不能被派生类继承的成员是(B)A)成员函数B)构造函数与析构函数C)成员变量D)虚函数16.在创建派生类对象时,构造函数的执行顺序是(D)A)对象成员构造函数、基类构造函数、派生类本身的构造函数B)派生类本身的构造函数、基类构造函数、对象成员构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)基类构造函数、对象成员构造函数、派生类本身的构造函数17关于常成员函数说明正确的是(D)A)常成员函数的函数体中能修改对象B)常成员函数可以访问非常成员函数C)非常成员函数不可以访问常成员函数D)常成员函数中能访问常成员函数18.在C++中,要实现动态联编,可以使用(D)调用虚函数A)类名B)派生类指针C)对象名D)基类指针或基类的引用19.下列函数中,可以作为虚函数的是(C)A)C函数B)构造函数C)成员函数、析构函数D)C风格的友元函数20.下面函数原形声明中,(C)声明了fun为虚函数A)voidfun()=0;B)virtualvoidfun()=0;C)virtualvoidfun();D)virtualvoidfun(){};21.假设A为抽象类,下列声明(B)是正确的A)Afun(int);B)A*p;C)intfun(A);D)AObj;22.下面描述中,正确的是(B)A)虚函数是没有实现的函数B)纯虚函数可以被派生类实现C)抽象类是没有纯虚函数的类D)抽象类不能创建指针或引用23)已知obj是一个对象,下面哪一个是不可能出现的?(A/D)

[A]obj.100[B]!obj [C]obj++ [D]intr=obj,10024下述程序中,类C的public各有哪些属性成员(B)。classB1 {public: inti

;protected

: intk

;};classB2 {public: intl

;private: intm;protected

: intq

;};classB3 {public: intp1;};classC:publicB2,protectedB1,privateB3{public: intc;};[A]i/l/p1[B]c/l[C]c/l/q[D]i/l/q25下述程序运行后,显示结果为(A)。classB1 {public: B1(inti){cout<<"constructingB1"<<i<<endl;} ~B1(){cout<<"destructingB1"<<endl;}};classB2 {public: B2(intj){cout<<"constructingB2"<<j<<endl;} ~B2(){cout<<"destructingB2"<<endl;} };classB3 {public: B3(){cout<<"constructingB3*"<<endl;} ~B3(){cout<<"destructingB3"<<endl;} };classC:publicB2,publicB1,publicB3 {public:C(inta,intb,intc,intd):B1(a),memberB2(d),memberB1(c),B2(b){}private: B1memberB1; B2memberB2; B3memberB3;};voidmain(){ Cobj(1,2,3,4);}[A]constructingB22[B] constructingB11constructingB11 constructingB22constructingB3* constructingB3*constructingB13 constructingB13constructingB24 constructingB24constructingB3* constructingB3*destructingB3 destructingB3destructingB2 destructingB2destructingB1 destructingB1destructingB3 destructingB3destructingB1 destructingB1destructingB2 destructingB2[C] constructingB22 [D] constructingB22constructingB11 constructingB11constructingB3* constructingB3*constructingB13 constructingB3*constructingB24 constructingB13constructingB3* constructingB24destructingB3 destructingB3destructingB2 destructingB2destructingB1 destructingB1destructingB3 destructingB3destructingB2 destructingB1destructingB1 destructingB226下列的模板说明中正确的是(C/D)A.template<typenameT1,T2>B.template<classT1,T2>C.template<classT1,classT2>D.template<typenameT1,typenameT2>27关于函数模板描述错误的(D)A函数模板必须由程序员实例化为可执行的函数模板B.函数模板的实例化由编译器实现C.一个类定义中,只要有一个函数模板,则这个类是类模板D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化28函数模板定义如下:template<typenameT>Max(Ta,Tb,T&c){c=a+b;}下列选项正确的是(B)intx,y;charz;Max(x,y,z);doublex,y,z;Max(x,y,z);C.intx,y;floatz;Max(x,y,z);D.floatx;doubley,z;Max(x,y,z);29.下列有关模板的描述正确的,类模板的模板参数(D)A.不能作为数据成员的类型B.不能作为成员函数的返回类型C.不能作为成员函数的参数类型D.以上三种均是错误的说法二、判断题(每题1分,共6题),正确勾,错误打叉1. 执行语句A*p=Aa[100];时,类A的构造函数会被调用100次。(F)2. 一个类中的成员函数重载(overload)可以用const修饰符、函数原型的参数个数、对应位置的参数的类型和返回值类型为依据。(F)3. 实例化派生类对象时, 一定会调用到基类的某一个构造函数。(T)4. 如果类A是类B的友员, 类D以public继承方式从类B继承,则类A也是类D的友员。(F)5. 在同一个类中,可以定义重载的成员函数(T)在public继承方式下,基类中被说明为protected和private的成员能被其派生类的成员函数访问。(F)简答题(12分),结合面向对象思想回答下面问题;什么时候使用组合?Hasa什么时候使用重写虚函数?虚函数就是在基类中被关键字virtual说明,并在派生类中重新定义的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。3、有类定义classTest{inta,b; public:Test(intm,intn){a=m;b=n;}voidSet(intm,intn){a=m;b=n;}//......};有人认为“Test和Set函数的功能一样,只要定义其中一个就够了”。这种说法正确吗?为什么?

不正确,Test只能用于初始化,有Set才能在创建对象后修改数据。四、改错题:指出下面程序的错误或不恰当的地方,并且修改正确。(12分)“circle.h”文件内容classcircle{private: intradius=0;public: virtualcircle(); ~circle();};circle.cpp文件内容#include“circle.h”#include<iostream>usingnamespacestd;circle::circle(){ cout<<"Hereisconstructor\n"; this->radius=6; returnradius;}voidcircle::~circle(){ cout<<"Hereisdestructor\n";}virtualcircle()去掉virtual;去掉return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论