C++基础考试

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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){coutconstructingB1iendl;}~B1(){coutdestructingB1endl;}};classB2{public:B2(intj){coutconstructingB2jendl;}~B2(){coutdestructingB2endl;}};classB3{public:B3(){coutconstructingB3*endl;}~B3(){coutdestructingB3endl;}};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]constructingB11constructingB11constructingB22constructingB3*constructingB3*constructingB13constructingB13constructingB24constructingB24constructingB3*constructingB3*destructingB3destructingB3destructingB2destructingB2destructingB1destructingB1destructingB3destructingB3destructingB1destructingB1destructingB2destructingB2[C]constructingB22[D]constructingB22constructingB11constructingB11constructingB3*constructingB3*constructingB13constructingB3*constructingB24constructingB13constructingB3*constructingB24destructingB3destructingB3destructingB2destructingB2destructingB1destructingB1destructingB3destructingB3destructingB2destructingB1destructingB1destructingB226下列的模板说明中正确的是(C/D)A.templatetypenameT1,T2B.templateclassT1,T2C.templateclassT1,classT2D.templatetypenameT1,typenameT227关于函数模板描述错误的(D)A函数模板必须由程序员实例化为可执行的函数模板B.函数模板的实例化由编译器实现C.一个类定义中,只要有一个函数模板,则这个类是类模板D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化28函数模板定义如下:templatetypenameTMax(Ta,Tb,T&c){c=a+b;}下列选项正确的是(B)A.intx,y;charz;Max(x,y,z);B.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)6.在public继承方式下,基类中被说明为protected和private的成员能被其派生类的成员函数访问。(F)三、简答题(12分),结合面向对象思想回答下面问题;1、什么时候使用组合?Hasa2、什么时候使用重写虚函数?虚函数就是在基类中被关键字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”#includeiostreamusingnamespacestd;circle::circle(){coutHereisconstructor\n;this-radius=6;returnradius;}voidcircle::~circle(){coutHereisdestructor\n;}virtualcircle()去掉virtual;去掉returnradius;voidcircle::~circle()去掉void五、编程题(12)“姓名”和“性别”是教师、学生共有的属性,“职称”和“工资”是教师特有的属性,“班级”和“成绩”是学生特有的。请用类模拟?classteacher{public:charname[20];charsex;private:chartitle[20];doublesalary;};classstudent:publicteacher{private:chargrade[20];intscore;};

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功