您好,欢迎访问三七文档
C++面向对象程序设计复习题1一、单项选择题,在每小题列出的四个备选项中,1.说明虚函数的关键字是(B)。A.inlineB.virtualC.defineD.static2.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为(A)。A.mainB.MAINC.nameD.function3.如果在类外有函数调用CPoint::func();则函数func()是类CPoint的(C)。A.私有静态成员函数B.公有非静态成员函数C.公有静态成员函数D.友元函数4.一个类的所有对象共享的是(D)。A.私有数据成员B.公有数据成员C.保护数据成员D.静态数据成员5.动态联编所支持的多态性称为(D)。A.虚函数B.继承C.编译时多态性D.运行时多态性6.对虚基类的定义(A)。A.不需要使用虚函数B.必须使用虚函数C.必须使用privateD.必须使用public7.类型转换函数(A)。A.不能带有参数B.只能带一个参数C.只能带2个参数D.只能带3个参数8.说明内联函数的关键字是(A)。A.inlineB.virtualC.defineD.static9.假定CAb为一个类,则执行CAboX;语句时将自动调用该类的(B)A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数10.下面的哪个保留字不能作为函数的返回类型?(C)A.voidB.intC.newD.long11.不能参与重载的运算符是(A)。A.类B.函数C.函数模板D.运算符12.由于数据隐藏的需要,静态数据成员通常被说明为(A)。A.私有的B.公有的C.保护的D.不可访问的13.编译时多态性使用什么获得?(A)A.重载函数B.继承C.虚函数D.B和C14.拷贝构造函数的参数通常是(C)。A.无特殊要求B.指向对象的指针C.自已类对象的常引用D.对象15.C++有几种联编?(B)A.1种B.2种C.3种D.4种16.基类和派生类可以分别称为(B)。A.“大类”和“小类”B.“父类”和“子类”C.“小类”和“大类”D.“子类”和“父类”17.下面有关重载函数的描述中,正确的是(C)。A)重载函数必须具有不同的返回值类型B)重载函数形参个数必须不同C)重载函数必须具有不同的形参表D)重载函数名可以不同18.假定MyCIass为一个类,那么下列的函数说明中,(D)为该类的析构函数。A)void~MyClass();B)~MyClass(intn);C)MyClass();D)~MyClass();19.(A)是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。A)模板B)类C)对象D)函数20.下面关于静态成员函数的叙述中错语的是(B)。A.静态成员函数可以有返回值B.this指针可以指向静态成员函数C.静态成员函数可以具有指针参数D.静态成员函数可有具有返回值类型21.定义类模板时要使用关键字(D)。A.privateB.publicC.deleteD.template22.下列是重载乘法运算符的函数原型声明,其中错误的是(A)。A)MyClassoperator*(double,double);B)MyClassoperator*(double,MyClass);C)MyClassoperator*(MyClass,double);D)MyClassoperator*(MyClass,MyClass);23.以下()成员函数表示纯虚函数。A)virtualintfun(int)B)voidfun(int)=0C)virtualvoidfun()=0D)virtualvoidfun(int){}24.关于纯虚函数,下列表述中正确的是(C)。A)纯虚函数的声明总是以=0结束B)含有纯虚函数的类可以定义对象C)含有纯虚函数的类是抽象类D)上面都是错误的25.(C)解决二义性问题。A.只能使用作用域分辨操作符B.只能使用虚基类C.使用作用域分辨操作符或虚基类D.上面都不能26.实现编译时的多态性要使用(A)。A)重载函数B)析构函数C)构造函数D)虚函数二、判断正误题,判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。1.虚函数在基类和派生类之间定义,且要求函数原型完全一致。(√)2.抽象类可以用来直接创建对象。(×)3.内联函数中可以出现递归语句。(×)4.模板类与类模板的意义完全相同。(×)5.常对象只能调用常成员函数。(√)6.重载函数要求函数有相同的函数名,但具有不同的参数序列。(√)7.不可以定义抽象类的对象。(√)8.内联函数的定义必须出现在第一次调用内联函数之前。(√)9.模板函数与函数模板的意义完全相同。(×)10.只有常成员函数才可以操作常对象。(√)11.引用可以不初始化。(×)12.使用new运算符创建数组时,可以为该数组指定初始值。(×)13构造函数可以设置默认参数。(√)14.类的析构函数的作用是对象的初始化。(×)15.cout的默认输出对象是键盘,cin的默认输入对象是屏幕。(×)16.抽象类可以用来直接创建对象。(×)17.常对象可以调用任意成员函数。(×)18.在用class定义一个类时,数椐成员和成员函数默认的访问权限是public。(×)19.若类Y是类X的私有派生类,类Z是类Y的公有派生类,则类Z不能访向类X的公有成员和保护成员。(×)20.C++中设置虚基类的目的是实现运行时的多态。(√)21.模板类与类模板的意义完全相同。(×)22.只有常成员函数才可以操作常对象。(√)三、程序分析题,给出下面各程序的输出结果。1.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;classCArray{public:CArray(intiArray[],intiSize):m_pArray(iArray),m_iSize(iSize){}intGetSize(){returnm_iSize;}int&operator[](intiIndex){returnm_pArray[iIndex-1];}private:int*m_pArray;//指向一个数组空间intm_iSize;};//数组元素个数intmain(){ints[]={3,7,2,1,5};CArrayoArray(s,5);oArray[1]=9;for(inti=1;i=5;i++){coutoArray[i];}coutendl;return0;}上面程序的输出结果为:972152.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;templateclassTypevoidPrint(Typea[],intn){for(inti=0;in;i++){couta[i];}}intmain(){inta[]={5,6,8};doubleb[]={6.8,9.6};Print(a,sizeof(a)/sizeof(int));Print(b,2);coutendl;return0;}上面程序的输出结果为:5686.89.63.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;classCTest{public:CTest(intiVar):m_iVar(iVar){m_iCount++;}~CTest(){}voidPrint()const;staticintGetCount(){returnm_iCount;}private:intm_iVar;staticintm_iCount;};intCTest::m_iCount=0;voidCTest::Print()const{coutthis-m_iVarthis-m_iCount;}intmain(){CTestoTest1(6);oTest1.Print();CTestoTest2(8);oTest2.Print();coutCTest::GetCount();coutendl;return0;}上面程序的输出结果为:618224.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;classCTest{public:CTest(intiX=0,intiY=0,intiZ=0):m_iZ(iZ){m_iX=iX;m_iY=iY;}voidPrint(){coutm_iXendl;coutm_iYendl;}voidPrint()const{coutm_iZendl;}private:intm_iX,m_iY;constintm_iZ;};intmain(){CTestoTest1;oTest1.Print();CTestoTest2(1,6,8);oTest2.Print();constCTestoTest3(6,0,18);oTest3.Print();coutendl;return0;}上面程序的输出结果为:001685.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;classCPosition{public:CPosition(intiPositionX=0,intiPositionY=0):m_iPositionX(iPositionX){m_iPositionY=iPositionY;}intGetPositionX()const{returnm_iPositionX;}intGetPositionY()const{returnm_iPositionY;}voidSetPositionX(intiPositionX){m_iPositionX=iPositionX;}voidSetPositionY(intiPositionY){m_iPositionY=iPositionY;}private:intm_iPositionX;//X坐标intm_iPositionY;};//X坐标intmain(void){CPositionoPostion1;constCPositionoPostion2(6,8);coutoPostion1.GetPositionX()endl;oPostion1.SetPositionX(16);coutoPostion1.GetPositionX()endl;oPostion1.SetPositionY(18);coutoPostion1.GetPositionY()endl;coutoPostion2.GetPositionX()endl;coutoPostion2.GetPositionY()endl;return0;}上面程序的输出结果为:01618686.阅读下面程序,写出输出结果。#includeiostreamusingnamespacestd;templateclassTypeclassCTest{public:CTest(Typem_tArray[],intiSize):m_pArray(m_tArray){m_iSize=iSize;}voidPrint()const{for(inti=0;im_iSize;i++){coutm_pArray[i];}}private:Type*m_pArray;intm_iSize;};intmain(void){inta[]={1,0,8};doubleb[]={1.6,1.8};CTestintoTest1(a,3);oTest1.Print();CTestdoubleoTest2(b,sizeof(b)/sizeof(double));oTest2.Print();coutendl;return0;}上面程序的输出结果为:1081.61.87.阅读下面程序,写出输出结果
本文标题:c++复习题1
链接地址:https://www.777doc.com/doc-3357969 .html