⼀一、选择题1、关于封装,下列列说法中不不正确的是()(A)通过封装,对象的全部属性和操作结合在⼀一起,形成⼀一个整体(B)通过封装,⼀一个对象的实现细节被尽可能地隐藏起来(不不可⻅见)(C)通过封装,每个对象都成为相对独⽴立的实体(D)通过封装,对象的属性都是不不可⻅见的2、假定AA为⼀一个类,inta()为该类的⼀一个成员函数,若该成员函数在类体外定义,则函数头为()(A)intAA::a()(B)intAA:a()(C)AA::a()(D)AA::inta()3、⼀一个类中是否可以允许⼀一个⽆无参构造函数和⼀一个全部都是默认参数的构造函数共存()(A)不不允许(B)允许(C)⽆无法确定(D)视构造函数确定4、在C++中,cin是个()(A)类(B)对象(C)模板(D)函数5、析构函数的作⽤用是()(A)⼀一般成员函数的初始化(B)类的初始化(C)对象的初始化(D)在删除类创建的对象前完成⼀一些清理理⼯工作6、假定⼀一个类AB含有⼀一个浮点型数据成员a,当⽤用户不不定义任何构造函数时,系统为该类定义的⽆无参构造函数为()(A)AB(){a=0;}(B)AB(floataa=0):a(aa){}(C)A(){}(D)AB(){}7、C++语⾔言是由C语⾔言逐渐发展演变⽽而来的。与C语⾔言相⽐比,它在求解问题⽅方法上进⾏行行的最⼤大改进是()(A)⾯面向过程(B)⾯面向对象(C)安全性(D)复⽤用性8、C++的源⽂文件的扩展名为()(A).cpp(B).exe(C).obj(D).lik9、下列列说法中,不不是构造函数的特征是()(A)构造函数的函数名与类名相同(B)构造函数可以重载(C)构造函数可以设置缺省参数(D)构造函数必须指定类型说明10、函数重载是指(A)(A)两个或两个以上的函数取相同的函数名,但形参的个数或者类型不不同(B)两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不不同(C)两个以上的函数名字不不同,但形参的个数或者类型相同(D)两个以上的函数取相同的函数名,并且函数的返回类型相同11、有如下类定义:classMyClass{intValue;Public:MyClass(intn):Value(n){}//如果没有,⾃自动⽣生成默认//copy构造函数//赋值构造函数intGetValue(){returnValue;}};则类MyClass中,构造函数的个数是()(A)1个(B)2个(C)3个(D)4个12、⾯面向对象程序设计的三⼤大特性不不包括()A:封装性B:继承性C:多态性D:健壮性13、在C++语⾔言中,数据封装要解决的问题是()A:数据的规范化B:便便于数据转换C:避免数据丢失D:防⽌止不不同模块之间数据的⾮非法访问14、下列列各项中符合函数重载必须满⾜足的条件的是A:必须有不不同的参数个数B:对应的参数类型必须不不相同C:A和B必须同时满⾜足D:A和B只要满⾜足⼀一个即可15、下列列存储类标识符中,要求通过函数来实现⼀一种不不太复杂的功能,并且要求加快执⾏行行速度,选⽤用()合适.A:内联函数;B:重载函数;C:递归调⽤用;D:嵌套调⽤用.16、下列列关于类定义的说法中,正确的是()A:类定义中包括数据成员和函数成员的声明B:类成员的缺省访问权限是保护的C:数据成员必须被声明为私有的D:成员函数只能在类体外进⾏行行定义17、四组函数原型说明中,满⾜足C++函数重载规则的是A:floatf(floatx);voidf(floaty);B:floatf(floatx);voidf2(floatx,floaty);C:floatf(floatx,inty);voidf(floaty);D:floatf(floaty);floatf(floaty);18、已知类A中的⼀一个成员函数的说明如下:voidSet(A&a);则该函数的参数A&a的含义是A:指向A的指针为aB:将变量量a的地址赋给类AC:类A对象引⽤用a⽤用作函数的形参D:变量量A与a按位与后作函数参数19、类定义classA{intx;staticinty;};,问32机中sizeofA等于A:4B:8C:0D:不不定20、⾃自定义类型中的哪种成员的访问不不受限制()A:publicB:protectedC:privateD:以上都不不是21、在C++中,编写⼀一个内联函数Fun,使⽤用int类型的参数,求其平⽅方并返回,返回值也为int类型,下列列定义正确的是()A:intFun(intx){returnx*x;}B:inlineintFun(intx){returnx*x;}C:intinlineFun(intx){returnx*x;}D:intFun(intx){inlinereturnx*x;}22、类定义classA{intx;staticinty;};,问32机中sizeofA等于()A:4B:8C:0D:不不定23、指出下列列输出语句句哪些是不不合法的()A:std::cout/*;B:std::cout*/;C:std::cout/**/;D:std::cout/**/*/;24、⼀一个函数调⽤用语句句为fun((e1,e2,e3),(e4,e5),e6);,其实参个数为A:3B:4C:5D:625、所谓数据封装就是将⼀一组数据和与这组数据有关操作组装在⼀一起,形成⼀一个实体,这实体也就是A:类B:对象C:函数体D:数据块26、⾯面向对象程序设计中的数据隐藏指的是()A:输⼊入数据必须输⼊入保密⼝口令B:数据经过加密处理理C:对象内部数据结构上建有防⽕火墙D:对象内部数据结构的不不可访问性27、存储以下数据,占⽤用存储字节最少的是().A:0B:'0‘C:0“D:0.028、⾯面向对象程序设计将数据与()放在⼀一起,作为⼀一个相互依存、不不可分割的整体来处理理A:对数据的操作B:信息C:数据隐藏D:数据抽象29、下列列是模板声明的开始部分,其中正确的是()A:templateTB:templateclassT1,T2C:templateclassT1,classT2D:templateclassT1;classT230、类中定义的成员默认为()访问属性.A:publicB:privateC:protectedD:friend31、使⽤用输⼊入输出操作符setw,可以控制A:输出精度B:输出宽度C:对⻬齐⽅方式D:填充字符32、⾯面向对象系统的()是⼀一种信息隐藏技术,⽬目的在于将于对象的使⽤用者与设计者分开,使⽤用者不不必知道对象⾏行行为实现的细节,只需⽤用设计者提供的协议命令对象⽀支做即可A:多态性B:封装性C:继承性D:复⽤用性33、关于this指针使⽤用说法正确的是()(A)保证每个对象拥有⾃自⼰己的数据成员,但共享处理理这些数据的代码(B)保证基类私有成员在⼦子类中可以被访问(C)保证基类保护成员在⼦子类中可以被访问(D)保证基类公有成员在⼦子类中可以被访问34、构造函数是在()时被执⾏行行的.A:程序编译B:创建对象C:创建类D:程序装⼊入内存35、下⾯面程序运⾏行行时的输出结果是()#includeiostreamusingnamespacestd;classtest{private:inta;public:test(){coutconstructorendl;}test(inta){coutaendl;}test(consttest&test){a=test.a;coutcopyconstructorendl;}~test(){coutdestructorendl;}};intmain(){testA(3);return0;}A:3B:constructordestruclorC:copyconstructordestructordestructorD:3destruclor36、假定AB为⼀一个类,则()为该类的拷⻉贝构造函数的原型说明A:AB(ABx);B:AB(intx);C:AB(constAB&x)D:voidAB(AB&x);37、拷⻉贝构造函数的作⽤用是A:进⾏行行数据类型的转换B:⽤用对象调⽤用成员函数C:⽤用对象初始化对象D:⽤用⼀一般类型的数据初始化对象38、下⾯面的程序执⾏行行时,MyClass类的拷⻉贝构造函数被调⽤用的次数是classMyClass{public:MyClass(intn){number=n;}//拷⻉贝构造函数MyClass(constMyClass&other){number=other.number;}~MyClass(){}private:intnumber;};MyClassfun(MyClassp){MyClasstemp(p);returntemp;}intmain(){MyClassobj1(10),obj2(0);MyClassobj3(obj1);obj2=fun(obj3);return0;}A:5B:4C:3D:239、要与new配合使⽤用的是()A:deleteB:freeC:delete[]D:destroy40、假设Sample是个类,则语句句Samplea[2],*p[3];调⽤用构造函数的次数为()A:0B:2C:3D:541、通常,拷⻉贝构造函数的形参类型是()A:某个对象类型B:某个对象的成员类型C:某个对象的引⽤用类型D:某个对象的指针名42、关于默认构造说法错误的是()A:默认构造函数,调⽤用时可以不不提供参数B:没有默认构造不不能定义数组C:⼀一个类必须存在默认构造函数D:默认构造函数可能由系统提供43、classMyClass{private:intid;chargender;char*phone;public:MyClass():id(0),gender('#'),phone(NULL){}MyClass(intno,charge='#',char*ph=NULL){id=no;gende=ge;phone=ph;}};下列列类对象定义语句句中错误的是()A:MyClassmyObj;B:MyClassmyObj(11,13301111155);C:MyClassmyObj(12,'m');D:MyClassmyObj(12);44、声明函数intFunc(inta=0,intb=3,intc=4)相当于声明了了⼏几个函数形式()A:1B:2C:3D:445、有以下类定义classPoint{public:Point(intx=0,inty=0){_x=x;_y=y;}voidMove(intxOff,intyOff){_x+=xOff;_y+=yOff;}voidPrint()const{cout'('_x','_y')'endl;}private:int_x,_y;};下列列语句句中会发⽣生编译错误的是A:Pointpt;pt.Print();B:constPointpt;pt.Print();C:Pointpt;pt.Move(l,2);D:constPointpt;pt.Move(l,2);⼆二、填空1、#includeiostream.hclassbase1{public:base1(){coutConstructingbase1\n;}~base1(){coutDestructingbase1\n;}};classbase2{public:base2(){coutConstructingbase2\n;}~base2(){coutDestructingbase2\n;}};classderived:publicbase1,publicbase2{public:derived(){coutConstructingderived\n;}~derived(){coutDestructingderived\n;}};intmain(){derivedob;ret