收藏 分销(赏)

C++复习题+答案.doc

上传人:人****来 文档编号:4300265 上传时间:2024-09-04 格式:DOC 页数:51 大小:74.30KB
下载 相关 举报
C++复习题+答案.doc_第1页
第1页 / 共51页
C++复习题+答案.doc_第2页
第2页 / 共51页
C++复习题+答案.doc_第3页
第3页 / 共51页
C++复习题+答案.doc_第4页
第4页 / 共51页
C++复习题+答案.doc_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、C+总复习题一、单项选择题1说明虚函数的关键字是( )。A. inlineB. virtualC. defineD. static2在每个C+程序中都必须包含有这样一个函数,该函数的函数名为( )。A. main B. MAIN C. name D. function3cout是某个类的标准对象的引用,该类是( )。A. ostream B. istream C. stdout D. stdin4如果在类外有函数调用CPoint:func();则函数func()是类CPoint的( )。A. 私有静态成员函数B. 公有非静态成员函数 C. 公有静态成员函数B. 友元函数5. 如果class类中

2、的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为( )。A. public B. protected C. private Dstatic 6一个类的所有对象共享的是( )。A. 私有数据成员B. 公有数据成员C. 保护数据成员D. 静态数据成员7动态联编所支持的多态性称为( )。A. 虚函数B. 继承C. 编译时多态性D. 运行时多态性8定义类模板时要使用关键字( )。A. constB. newC. deleteD. template9对虚基类的定义( )。A. 不需要使用虚函数B. 必须使用虚函数C. 必须使用privatD. 必须

3、使用public10类型转换函数( )。A. 不能带有参数B. 只能带一个参数C. 只能带2个参数D. 只能带3个参数参考答案:1B2A3A 4C 5C 6D7D8D9A10A1下面有关重载函数的描述中,正确的是( )。A)重载函数必须具有不同的返回值类型 B)重载函数形参个数必须不同C)重载函数必须具有不同的形参表D)重载函数名可以不同2假定MyCIass为一个类,那么下列的函数说明中,( )为该类的析构函数。A)voidMyClass();B)MyClass(int n);C)MyClass( );D)MyClass( );3( )是以一种完全通用的方法来设计函数或类而不必预先说明将被使用

4、的每个对象的类型。 A)模板B)类C)对象D)函数4下面关于静态成员函数的途术中错语的是( )。A. 静态成员函数可以有返回值 B. this指针可以指向静态成员函数C. 静态成员函数可以具有指针参数 D. 静态成员函数可有具有返回值类型5定义类模板时要使用关键字( )。A. private B. publicC. delete D. template6下列是重载乘法运算符的函数原型声明,其中错误的是( )。A)MyClass operator*(double,double);B)MyClass operator*(double,MyClass);C)MyClass operator*(MyC

5、lass,double);D)MyClass operator*(MyClass,MyClass);7以下( )成员函数表示纯虚函数。A)virtual int fun(int)B)void fun(int)=0C)virtual void fun()=0D)virtual void fun(int)8关于纯虚函数,下列表述中正确的是( )。A)纯虚函数的声明总是以=0结束B)含有纯虚函数的类可以定义对象C)含有纯虚函数的类是抽象类 D)上面都是错误的 9( )解决二义性问题。A. 只能使用作用域分辨操作符B. 只能使用虚基类C. 使用作用域分辨操作符或虚基类D. 上面都不能10实现编译时的多

6、态性要使用( )。A)重载函数B)析构函数C)构造函数D)虚函数参考答案:1C2D3A4B5D 6A7C8C 9C 10A1下列关于C+函数的说明中,正确的是( )。A)内联函数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是return语句C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式2假定MyCIass为一个类,那么下列的函数说明中,( )为该类的无参构造函数。A)void MyClass();B)MyClass(int n);C)MyClass( );D)MyClass( );3下列叙述中,错

7、误的是( )。A)派生类可以使用private派生B)对基类成员的访问必须是无二义性的C)基类成员的访问能力在派生类中维持不变D)赋值兼容规则也适用于多继承的组合4当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中( ) 。A. 都是虚函数B. 只有被重新说明为vittual时才是虚函数 C. 都不是虚函数 D. 上面都不正确 5派生类的构造函数的成员初始化表中,不能包含( )。A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化6下列是重载加法运算符的函数原型声明,其中错误的是( )。A)MyClass operator+

8、(double,double);B)MyClass operator+(double,MyClass);C)MyClass operator+(MyClass,double);D)MyClass operator+(MyClass,MyClass);7派生类中的成员不能直接访问基类中的( )成员。A)public B)private C)virtualD)protected8实现运行时的多态性要使用()。A)重载函数B)析构函数C)构造函数D)虚函数9如果在类MyClass的外面使用函数调用MyClass:f();则函数f()是类MyClass的( )。A. 静态成员函数B. 非静态成员函数C

9、. 友元函数D. 前面都不正确10由于常对象不能被更新,因此( )。A)通过常对象只能调用它的常成员函数B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员D)通过常对象可以调用任何不改变对象值的成员函数参考答案:1C2C3C4A5C6A7B8D9A10A1下列对类的构造函数和析构函数描述正确的是()。A)构造函数可以重载,析构函数不能重载B)构造函数不能重载,析构函数可以重载C)构造函数可以重载,析构函数可以重载D)构造函数不能重载,析构函数不能重载2在函数定义前加上关键字“inline”,表示该函数被定义为( )。A)重载函数 B)内联函数C)成员函数 D)普通函数3下面有关重载函

10、数的说明中, ( )是正确的。A)重载函数必须具有不同的返回值类型B) 重载函数形参个数必须不同C) 重载函数必须具有不同的形参列表D) 重载函数名可以不同4下列有关类与对象的说法中,( ) 是不正确的。A)对象是类的一个实列B) 任何一个对象只能属于一个具体的类C) 一个类只能有一个对象D) 类和对象的关糸和数椐类型与变量的关糸类似5已知: Print( )函数是一个类的常成员函数,它无返回值,下列表示中,正确的是 ( )。A)void Print( ) const; B) const void Print( ); C) void const Print( ); D) void Print(

11、const)6假定Myclass为一个类,那么下列的函数说明中( )为该类的析构函数。A) void Myclass( ); B) Myclass( int n);C) Myclass( ); D) Myclass( )7下面类的定义中有 ( ) 处错误。 class myclassint i=0; public: void myclass( );myclass(value); ; A) 1 B)2 C)3 D)48说明虚函数的关键字是( )。A. inlineB. virtualC. defineD. static9cout是某个类的标准对象的引用,该类是()。A. ostream B. i

12、stream C. stdout D. stdin10如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为( )。 A. public B. protected C. private Dstatic 11定义类模板时要使用关键字( )。A. constB. newC. delete D. template12一个类的所有对象共享的是( )。A. 私有数据成员B. 公有数据成员C. 保护数据成员D. 静态数据成员13静态成员函数没有( )。A. 返回值 B. this指针 C. 指针参数D. 返回类型14解决多重继承中二义性问

13、题的方法有( )。 A. 只能使用作用域分辨操作符B. 使用作用域分辨操作符或赋值兼容规则C. 使用作用域分辨操作符或虚基类D. 使用虚基类或赋值兼容规则15如果在类CTest的外面函数调用CTest:f( );则函数f( )是类CTest的( )。A. 静态成员函数B. 非静态成员函数C. 友元函数D. 前面都不正确参考答案:1A)2B)3C) 4C)5A)6D)7C)8B)9A)10C) 11D)12D)13B) 14C) 15A)1类的析构函数的作用是( )。 A) 作为类的一般成员函数B) 类的初始化C) 对象的初始化D) 对象的删除2一个类的友元函数或友元类可以访问该类的( )。A)

14、 私有成员 B) 保护成员 C) 公有成员 D) 所有成员3下列关于成员函数特征的描述中,( ) 是错误的。A) 成员函数一定是内联函数 B) 成员函数可以重载C) 成员函数可以设置参数的默认值 D) 成员函数可以是静态的4下列函数中,( ) 不是类的成员函数。A) 构造函数 B) 析构函数 C) 友元函数 D) 拷贝构造函数 5下列对派生类的描述中,( ) 是错误的。 A) 一个派生类可以作为另一个派生类的基类B) 派生类至少有一个基类 C) 派生类的成员除了它自己的成员外, 还包含了它的基类的成员 D) 派生类中继承的基类成员的访问权限到派生类中保持不变 6下列的描述中,( ) 是错误的。

15、A) 公有继承时基类中的public成员在派生类中仍是public的 B) 公有继承时基类中的private成员在派生类中仍是private的 C) 公有继承时基类中的protected成员在派生类中仍是protected的 D) 私有继承时基类中的public成员在派生类中仍是private的 7下列虚基类的声明中正确的是( )。 A) class virtual B: public A B) virtual class B: public A C) class B: public A virtual D) class B: virtual public A 8若类A和类B的定义如下:cla

16、ss Aint i, j; public: A(int m, int n): i(m), j(n) int Geti() return i; ;class B: public Aint k; public: B(int m, int n, int u): A(m, n), k(u) void Make() k = i * j; ;int main()B b(1, 2, 3);return 0;则上述定义中,( ) 是非法的表达式.A) k=i*j; B) int k; C) return i; D) void Make( ) 9若有以下程序:#include using namespace s

17、td;class A public: int a; A() a =10; ; class A1: public A1 public: A1() a = a + 1; ; class A2: public A public: A2() a = a + 2; ; class B: public A1, public A2 public: B() void Print() cout a str; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=( )。A. Microsoft Visual Studio 6.0! B. MicrosoftC. Micr

18、osoft Visual D. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z=*);下面函数调用中,不合法的是( )。A. testDefaulParam(5); B. testDefaulParam(5,8); C. testDefaulParam(5,#); D. testDefaulParam(0,0,*);5、下列语句中,将函数int sum(int x, int y)正确重载的是( )。A. float sum(int x, int y); B. int sum(i

19、nt a, int b);C. float sum(float x, float y); D. double sum(int y, int x);6、下列表示引用的方法中,( )是正确的。已知:int a=1000;A. int &x=a; B. char &y; C. int &z=1000; D. float &t=&a;7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( )。A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用8、下列有关C+类的说法中,不正确的是( )。A. 类是一种用户自定义的数据类型B. 只有类中的成员函数或类的友元函数才

20、能存取类中的私有成员C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的9、已知X类,则当程序执行到语句:X array3;时,调用了( )次构造函数。A. 0 B. 1 C. 2 D. 310、下面说法中,正确的是( )A. 一个类只能定义一个构造函数,但可以定义多个析构函数B. 一个类只能定义一个析构函数,但可以定义多个构造函数C. 构造函数与析构函数同名,只要名字前加了一个求反符号()D. 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以11、已知:print( )函数是一个类的常成员

21、函数,它无返回值,下列表示中,( )是正确的。 A. void print( ) const; B. const void print( ); C. void const print( ); D. void print(const);12、下面描述中,表达错误的是( ) A. 公用继承时基类中的public成员在派生类中仍是public的B. 公用继承时基类中的private成员在派生类中仍是private的C. 公用继承时基类中的protected成员在派生类中仍是protected的D. 私有继承时基类中的public成员在派生类中是private的13、设置虚基类的目的是( )。A. 简

22、化程序 B. 消除二义性 C. 提高运行效率 D. 减少目标代码14、下面( )的叙述不符合赋值兼容规则。A. 派生类的对象可以赋值给基类的对象B. 基类的对象可以赋值给派生类的对象C. 派生类的对象可以初始化基类的对象D. 派生类的对象的地址可以赋值给指向基类的指针15、关于虚函数的描述中,( )是正确的。 A. 虚函数是一个static类型的成员函数 B. 虚函数是一个非成员函数 C. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数 D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型16、下面关于友元的描述中,错误的是( )。A. 友元函数可以访问该类的私有数据成员

23、B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承17、下列关于静态数据成员的说法,不正确的是( )。A. 类中定义的公用静态数据成员,可以通过类的对象来访问B. 类中定义的所有静态数据成员,都必须在类外初始化C. 静态数据成员不是所有对象所共用的D. 普通的成员函数可以直接访问类中的静态数据成员18、如果表达式+i*k中的“+”和“*”都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为( )。A. operator*(i.operator+(),k) B. operator*(operator+(i),k)

24、C. i.operator+().operator*(k) D. k.operator*(operator+(i)19、下面对模板的声明,正确的是( )。A. template B. template C. template D. template20、下列的各类函数中,( )不是类的成员函数A. 构造函数 B. 析构函数 C. 友元函数 D. 复制构造函数参考答案:1-5C D B C C 6-10A A D D B 11-15A B B B C 16-20D C B C C1、关于C+与C语言关系的描述中,( )是错误的。 AC语言是C+语言的一个子集 BC语言与C+语言是兼容的 CC+语

25、言对C语言进行了一些改进 DC+语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,( )是正确的。Aint &x=m; Bint &y=10; Cint &z; Dfloat &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z=*);下面函数调用中,不合法的是( )。AtestDefaulParam(5); BtestDefaulParam(5,8); CtestDefaulParam(5,#); DtestDefaulParam(0,0,*);4、系统在调用重载函数时往往根据一些条件确定哪个重

26、载函数被调用,在下列选项中,不能作为依据的是( )。A函数的返回值类型 B参数的类型 C函数名称 D参数个数5、下列有关C+类的说法中,不正确的是( )。A类是一种用户自定义的数据类型B只有类中的成员函数或类的友元函数才能存取类中的私有成员C在类中,如果不做特别说明,所有成员的访问权限均为私有的D在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array3;时,调用了( )次构造函数。A0 B1 C2 D37、有关析构函数的说法,不正确的是( )。A析构函数有且仅有一个B析构函数和构造函数一样可以有形参C析构函数的功能是在系统释放对象之前作一些内存清理

27、工作D析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的是( )。Aprivate 部分 B protected 部分 Cpublic 部分 D以上都不对9、关于常数据成员的说法,不正确的是( )。A常数据成员的定义形式与一般常变量的定义形式相同,只不过常数据成员的定义必须出现在类体中B常数据成员必须进行初始化,并且不能被更新C常数据成员通过构造函数的成员初始化列表进行初始化D常数据成员可以在定义时直接初始化10、运用运算符delete删除一个动态对象时( )。A系统首先为该动态对象调用构造函数,再释放其占用的内存B系统首先释放该动态对象占用的内存,再为其调用构造函数C系统首先为

28、该动态对象调用析构函数,再释放其占用的内存D系统首先释放动态对象占用的内存,再为其调用析构函数11、可以在类外用p.a的形式访问派生类对象p的基类成员a,其中a是( )。A私有继承的公用成员 B公用继承的私有成员C公用继承的保护成员 D公用继承的公用成员12、在公用继承方式下,有关派生类对象和基类对象的关系,不正确的叙述是( )。A派生类的对象可以赋给基类的对象B派生类的对象可以初始化基类的引用C派生类的对象可以直接访问基类中的成员D派生类的对象的地址可以赋给指向基类的指针13、设置虚基类的目的是( )。A简化程序 B消除二义性 C提高运行效率 D减少目标代码14、在C+中,用于实现动态多态性

29、的是( )。A内联函数 B重载函数 C模板函数 D虚函数15、不能说明为虚函数的是( )。A析构函数 B构造函数 C类的成员函数 D以上都不对16、如果一个类至少有一个纯虚函数,那么就称该类为( )。A抽象类 B派生类 C纯基类 D以上都不对17、下面关于友元的描述中,错误的是( )。A友元函数可以访问该类的私有数据成员B一个类的友元类中的成员函数都是这个类的友元函数C友元可以提高程序的运行效率D类与类之间的友元关系可以继承18、下列运算符中,( )运算符在C+中不能被重载。A& B C: Dnew19、模板的使用实际上是将类模板实例化成一个( )。A函数 B对象 C类 D抽象类20、假定My

30、Class为一个类,则该类的拷贝构造函数的声明语句为( )。AMyClass(MyClass x) BMyClass&(MyClass x)CMyClass(MyClass &x) DMyClass(MyClass *x)参考答案:1-5D A C A D 6-10D B C D C 11-15D C B D B 16-20A D C C C1、下列特性中不是面向对象程序设计语言所特有的是( )。(A)数据封装(B)继承(C)多态性(D)模板2、( )是给变量取一个别名,它引入了变量的同意词。(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,( )只能被本类的成员函数和其友元函数

31、访问。(A)share(B)public(C)private(D)protected4、关于构造函数,下列说法不正确的是( )。(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的( )。(A)公有成员(B)保护成员(C)私有派生(D)公有和保护成员6、下列关于运算符重载的描述中,错误的是( )。(A)运算符重载不可以改变操作数的个数(B)运算符重载不可以改变运算符的功能(C)运算符重载不可以改变结合方向(D)运算符重载不可以改变运算优先级7、C+语言是从早期的C语言逐渐发展演变而来的.与C语言相比,

32、它在求解问题方法上进行的最大改进是( ) (A)面向过程(B)面向对象(C)安全性(D)复用性8、对于类中定义的成员,其隐含访问权限为( )。 Apublic Bprotected Cprivate Dstatic9、下面有关重载函数的说法中正确的是( ) (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表 (D)重载函数名可以不同;10、有如下的对类“CSample”的说明,其中( )是错误的。class CSample Aint a=23;BCSample();public:CCSample(int val);D CSample()

33、;11、在int a=3,int *p=&a;中,*p的值是()A.变量a的地址值 B.无意义 C.变量p的地址值 D.312、每个类( )构造函数。 (A)只能有一个 (B)只可有公有的 (C)可以有多个 (D)只可有缺省的13、在一个类中可以对一个操作符进行( )重载。 (A)1 种 (B)2 种以下 (C)3 种以下 (D)多种14、在公有继承的情况下,基类非私有成员在派生类中的访问权限( )(A) 受限制 (B)保持不变 (C)受保护 (D)不受保护15、应在下列程序划线处填入的正确语句是( )#include class Base public: void fun()coutBase

34、:funENDL; ; class Derived:public Base void fun() _/显示调用基类的函数fun() coutDerived:funfun();16、执行下面的程序将输出( ) #include class BASEchar c;public:BASE(char n):c(n)virtual BASE()coutc;class DERIVED:public BASE char c; public: DERIVED(char n):BASE(n+1),c(n) DERIVED()coutc; int main() DERIVED a(X); return 0; (A

35、)XY (B)YX (C)X (D)Y下面描述中,表达错误的是( ) (A)公有继承时基类中的public成员在派生类中仍是public的(B)公有继承是基类中的private成员在派生类中仍是private的 (C)公有继承时基类中的protected成员在派生类中仍是protected的 (D)私有继承时基类中的public成员在派生类中是private的18、定义析构函数时,应该注意( ) (A)其名与类名完全相同 (B)返回类型是 void 类型 (C)无形参,也不可重载 (D)函数体中必须有 delete 语句19、对于在类中定义的静态数据成员,下面正确的说法是( )A.该类的每个对

36、象中都有一个静态数据成员B.对象创建时产生 C.在类外进行初始化D.既可以在类外初始化,也可以在类内初始化20、C+中声明常量的关键字是( )。A. const B. extern C. public D. enum参考答案:1、D 2、B 3、C 4、D 5、D 6、B 7、B 8、C 9、C 10、A 11、D 12、C 13、D 14、B 15、C 16、A 17、B 18、C 19、C 20、A二、判断正误题1虚函数在基类和派生类之间定义,且要求函数原型完全一致。( )2抽象类可以用来直接创建对象。( )3内联函数中可以出现递归语句。( )4模板类与类模板的意义完全相同。( )5常对象

37、只能调用常成员函数。( )6重载函数要求函数有相同的函数名,但具有不同的参数序列。( )参考答案:1参考答案:2参考答案:3参考答案:4参考答案:5参考答案:6参考答案:按照标识符的要求,下划线是不能组成正确标识符的。()C+中使用了新的注释符(/),C语言中注释符(/*/)不能在C+中使用。()引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。()在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型。()For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。()返回值类型、参数个数和参数类型都相同的函数也可以重载。()重新定义的标识符在定义它的区域内是可见的,而与其同名的原标识符在此区域内是不可见的但是却是存在的。()通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。()友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。()已知:类A中一个成员函数说明如下:void Set(A&a);其中

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服