教育
 -面向对象程序设计-章节资料考试资料-南开大学【】
 1-01小节测试
 1、【判断题】遇到一个问题后,应先分析问题、设计算法,然后再编写程序。
 A、正确
 B、错误
 参考资料【 】
 1-02小节测试
 1、【多选题】下列说法正确的是( )。
 A、包含源代码的程序文件称为源文件
 B、包含源代码的程序文件称为可执行文件
 C、编译后生成的文件是可执行程序
 D、连接后生成的文件是可执行程序
 参考资料【 】
 2、【判断题】程序设计过程是指编写程序的过程。
 A、正确
 B、错误
 参考资料【 】
 1-03小节测试
 1、【多选题】下列说法正确的是( )。
 A、面向对象程序设计方法也成为面向过程的程序设计方法
 B、面向对象程序设计方法的设计思想是“自顶向下、逐步求精”
 C、面向对象程序设计方法最重要的两个概念是类和对象
 D、面向对象方法中,类是具有相同类型的对象的抽象
 参考资料【 】
 2、【判断题】面向对象程序设计方法中也会使用结构化程序设计方法。
 A、正确
 B、错误
 参考资料【 】
 1-04小节测试
 1、【多选题】下列说法正确的是( )。
 A、计算机所完成的每一个基本动作称为一条指令
 B、机器语言是计算机可以读懂的语言
 C、高级语言编写的程序必须通过特定翻译程序翻译成机器语言后才能被计算机读懂
 D、汇编语言和C++语言都是高级程序设计语言
 参考资料【 】
 2、【判断题】面向对象的英文缩写是OOP。
 A、正确
 B、错误
 参考资料【 】
 1-05小节测试
 1、【多选题】下列VS2010集成开发环境的说法中,正确的是( )。
 A、一个解决方案中仅能包含一个项目
 B、一个解决方案中可以包含多个项目
 C、一个项目中可以包含多个C++源文件
 D、一个项目中仅能包含一个C++源文件
 参考资料【 】
 2、【判断题】调试主要是为了解决源程序编译连接时产生的错误。
 A、正确
 B、错误
 参考资料【 】
 1-07小节测试
 1、【多选题】下列说法正确的是( )。
 A、使用cin和cout进行标准输入输出时必须包含头文件iostream
 B、在编写一个控制台应用程序时,程序中有且只能有一个main函数
 C、在一个控制台应用程序中,可以有多个main函数
 D、一条C++语句中可以定义多个不同类型的变量
 参考资料【 】
 2、【判断题】C++程序中使用cin和cout除了要包含头文件iostream外,还要指定使用std命名空间。
 A、正确
 B、错误
 参考资料【 】
 1-08小节测试
 1、【多选题】下列说法正确的是( )。
 A、C++字符集中包括汉字
 B、C++中myname和Myname表示不同的标识符
 C、name是一个合法的C++标识符
 D、1name是一个合法的C++标识符
 参考资料【 】
 2、【判断题】C++中用户定义的标识符可以与系统关键字同名。
 A、正确
 B、错误
 参考资料【 】
 1-09小节测试
 1、【多选题】已知:const double PI=3.14;则以下语句中正确的是( )。
 A、double a=2*PI;
 B、PI=3.14159;
 C、cin>>PI;
 D、cout<<PI;
 参考资料【 】
 2、【判断题】cin后面的符号是。
 A、正确
 B、错误
 参考资料【 】
 1-10小节测试
 1、【多选题】下列说法正确的是( )。
 A、定义内联函数需要在函数声明处加上inline关键字
 B、定义内联函数需要在函数定义处加上inline关键字
 C、内联函数是为了避免函数调用所引起的额外时间开销
 D、内联函数中不能包括循环、switch等复杂结构控制语句
 参考资料【 】
 小节测试
 1、【单选题】在C++中,关于下列设置参数默认值的描述中,正确的是( )。
 A、不允许设置参数的默认值
 B、设置参数默认值只能在定义函数时设置
 C、设置参数默认值时,应该是先设置右边的再设置左边的
 D、设置参数默认值时,应该全部参数都设置
 参考资料【 】
 2、【多选题】已知函数调用f(3,4,5)是正确的函数调用,则下列选项中函数f可能的声明形式包括( )。
 A、void f(int a, int b, int c);
 B、void f(int a, int b, int c=10);
 C、void f(int a=20, int b, int c=10);
 D、void f(int a, int b, int c=10, int d=20);
 参考资料【 】
 3、【判断题】默认形参值应在函数定义处指定。
 A、正确
 B、错误
 参考资料【 】
 1-12小节测试
 1、【单选题】对定义重载函数的下列要求中,( )是错误的。
 A、要求参数的个数不同
 B、要求参数中至少有一个类型不同
 C、要求参数个数相同时,参数类型不同
 D、要求函数的返回值不同
 参考资料【 】
 2、【多选题】下列选项中,正确的函数重载包括( )。
 A、void f(int a)和int f(int a)
 B、void f(int a, int b)和void f(int a)
 C、void f(int a, int b=5)和void f(int a)
 D、void f(int a)和void f(double a)
 参考资料【 】
 3、【判断题】函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
 A、正确
 B、错误
 参考资料【 】
 1-13小节测试
 1、【多选题】下列语句中正确的是( )。
 A、int p=new int(3);
 B、int p=new int[3];
 C、int p=new int3
 D、int p=new int[];
 参考资料【 】
 2、【判断题】int p=new int[5];表示为指针变量p分配了一个int型元素空间,并将该片内存空间的值初始化为5。
 A、正确
 B、错误
 参考资料【 】
 1-15小节测试
 1、【单选题】下列表示引用的方法中,( )是正确的。 已知:int k=1000;
 A、int &x=k;
 B、char &y;
 C、int &z=1000;
 D、float &t=&k;
 参考资料【 】
 2、【多选题】已知int a=10; int r=a;,则下列语句中,能够将变量a的值设置为3的语句包括( )。
 A、r-=7;
 B、a-=7;
 C、&r=3;
 D、a=3
 参考资料【 】
 3、【判断题】引用是某个变量的别名。对引用的操作,实质上就是对被引用的变量的操作。
 A、正确
 B、错误
 参考资料【 】
 1-16小节测试
 1、【多选题】已知函数:void f(int a, int b){a+=2; b+=2;},变量int x=3, y=5;,则以下说法正确的是( )。
 A、执行f(x,y)后,x的值是5
 B、执行f(x,y)后,x的值是3
 C、执行f(x,y)后,y的值是7
 D、执行f(x,y)后,y的值是5
 参考资料【 】
 第一章 编程练习(选择结构)
 第一章 编程练习(迭代结构)
 第一章 编程练习(数组和结构体1)
 第一章 编程练习(数组和结构体2)
 第一章 编程练习(函数)
 第一章 编程练习(指针)
 第一章单元测试
 1、【单选题】在C++中,关于下列设置参数默认值的描述中,正确的是( )。
 A、不允许设置参数的默认值
 B、设置参数默认值只能在定义函数时设置
 C、设置参数默认值时,应该是先设置右边的再设置左边的
 D、设置参数默认值时,应该全部参数都设置
 参考资料【 】
 2、【单选题】对定义重载函数的下列要求中,( )是错误的。
 A、要求参数的个数不同
 B、要求参数中至少有一个类型不同
 C、要求参数个数相同时,参数类型不同
 D、要求函数的返回值不同
 参考资料【 】
 3、【单选题】下列对重载函数的描述中,( )是错误的。
 A、重载函数中不允许使用默认参数
 B、重载函数中编译时根据参数表进行选择
 C、不要使用重载函数来描述毫无相干的函数
 D、构造函数重载将会给初始化带来多种方式
 参考资料【 】
 4、【单选题】下列表示引用的方法中,( )是正确的。 已知:int k=1000;
 A、int &x=k;
 B、char &y;
 C、int &z=1000;
 D、float &t=&k;
 参考资料【 】
 5、【单选题】下列引用的定义中,( )是错误的。
 A、int i; int &j=i;
 B、int i; int &j; j=i;
 C、float i; float &j=i;
 D、char d; char &k=d;
 参考资料【 】
 6、【多选题】已知:const double PI=3.14;则以下语句中正确的是( )。
 A、double a=2PI;
 B、PI=3.14159;
 C、cin>>PI;
 D、cout<<PI;
 参考资料【 】
 7、【多选题】已知函数声明void f(int a, int b=10, int c=20, int d=30);,则下列函数调用中正确的是( )。
 A、f(3)
 B、f(3,5)
 C、f(3,4,5,6)
 D、f()
 参考资料【 】
 8、【多选题】下列选项中,正确的函数重载包括( )。
 A、void f(int a)和int f(int a)
 B、void f(int a, int b)和void f(int a)
 C、void f(int a, int b=5)和void f(int a)
 D、void f(int a)和void f(double a)
 参考资料【 】
 9、【多选题】已知int a=10; int r=a;,则下列语句中,能够将变量a的值设置为3的语句包括( )。
 A、r-=7;
 B、a-=7;
 C、&r=3;
 D、a=3
 参考资料【 】
 10、【判断题】一个算法必须能在有限步骤内解决问题。
 A、正确
 B、错误
 参考资料【 】
 11、【判断题】源程序编译后会生成可执行程序。
 A、正确
 B、错误
 参考资料【 】
 12、【判断题】面向对象程序设计的英文缩写是OOP。
 A、正确
 B、错误
 参考资料【 】
 13、【判断题】调试主要是为了解决程序运行时产生的错误。
 A、正确
 B、错误
 参考资料【 】
 14、【判断题】cin后面的符号是。
 A、正确
 B、错误
 参考资料【 】
 15、【判断题】默认形参值应在函数定义处指定。
 A、正确
 B、错误
 参考资料【 】
 16、【判断题】返回引用的函数可以返回局部变量。
 A、正确
 B、错误
 参考资料【 】
 2-01小节测试
 1、【单选题】下面关于对象概念的描述中,( )是错误的。
 A、对象就是C语言中的结构变量
 B、对象代表着正在创建的系统中的一个实体
 C、对象是一个状态和操作(或方法)的封装体
 D、对象之间的信息传递是通过消息进行的
 参考资料【 】
 2、【单选题】C++对C语言做了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成面向对象。
 A、增加了一些新的运算符
 B、允许函数重载,并允许设置默认参数
 C、规定函数说明必须用原型
 D、引进类和对象的概念
 参考资料【 】
 3、【多选题】下列说法正确的是( )。
 A、面向对象方法的基本观点是一切系统都是由对象构成的
 B、面向对象方法的基本观点是一切系统都是由模块构成的
 C、面向对象方法中通过“消息”来触发行为
 D、面向对象方法中用类和对象来表示现实世界
 参考资料【 】
 4、【判断题】在面向对象程序设计中,具有相同属性和方法的一组对象的集合称为类。
 A、正确
 B、错误
 参考资料【 】
 2-02小节测试
 1、【单选题】面向对象程序设计思想的主要特征中不包括( )。
 A、封装性
 B、多态性
 C、继承性
 D、功能分解,逐步求精
 参考资料【 】
 2、【单选题】下列关于C++类的描述中错误的是( )。
 A、类与类之间可以通过一些手段进行通信和联络
 B、类用于描述事物的属性和对事物的操作
 C、类与类之间必须是平等的关系,而不能组成层次关系
 D、类与类之间可以通过封装而具有明确的独立性
 参考资料【 】
 3、【多选题】对象的核心概念就是通常所说的()。
 A、继承
 B、封装
 C、传递
 D、多态
 参考资料【 】
 2-03小节测试
 1、【单选题】有下面类的说明,有错误的语句是( )。class X {A.int a=2;B.X();public:C.X(int val);D.~X();};
 A、A
 B、B
 C、C
 D、D
 参考资料【 】
 2、【单选题】下面程序段中是内联函数的是( )。class location{private:int x ,y;public:void init(int initx,int inity) { x=initx; y=inity; }int getx(){return x;}int gety();}; inline int location::gety() {return y;}
 A、init (int initx,int inity)
 B、getx(),gety()
 C、A和B都是
 D、A和getx()
 参考资料【 】
 3、【多选题】下列说法正确的是( )。
 A、数据成员用来描述对象的状态
 B、成员函数用来描述对象的行为
 C、定义类需要使用class关键字
 D、类中的所有成员必须采有相同的访问控制方式
 参考资料【 】
 4、【判断题】在类体中可以在声明成员变量的同时为其赋初值。
 A、正确
 B、错误
 参考资料【 】
 2-04小节测试
 1、【单选题】声明一个类的对象时,系统自动调用( )函数。
 A、成员函数
 B、构造函数
 C、析构函数
 D、普通函数
 参考资料【 】
 2、【单选题】已知X类.则当程序执行到语句X array[3];时,调用了( )次构造函数。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 3、【单选题】下列( )是构造函数的特征。
 A、构造函数在创建对象时自动调用
 B、构造函数不可以重载
 C、构造函数不可以设置默认参数
 D、构造函数必须指定函数类型
 参考资料【 】
 4、【多选题】下面对构造函数的正确描述是( )。
 A、系统可以提供默认的构造函数
 B、构造函数可以有参数,所以可以有返回值
 C、构造函数可以重载
 D、构造函数可以设置默认参数
 参考资料【 】
 5、【判断题】一个类的构造函数中可以不包含对其子对象的初始化。
 A、正确
 B、错误
 参考资料【 】
 2-05小节测试
 1、【单选题】已知X类中的一个成员函数说明如下: void Set(Xa); 其中,Xa的含义是( )。
 A、a是指向X类对象的指针,用来作为Set()的形参
 B、将Xa的计算结果传递给Set()函数
 C、a是X类对象的引用,用来做为Set()的形参
 D、以上都不对
 参考资料【 】
 2、【单选题】对于下面定义的类A在函数f()中将对象成员n的值修改为60的语句应该是( )class A{public:A(int x){n=x;}void SetNum(int n1){n=n1;}private:int n;}int f() { Aptr=new A(6); }
 A、A(60)
 B、SetNum(60)
 C、ptr->SetNum(60)
 D、ptr->n=60
 参考资料【 】
 3、【多选题】已知Cirle是一个类,其中有一个成员函数public:void setRadius(int r),且有如下变量定义语句Circle c, pC=c;则下列语句正确的是( )。
 A、c::setRadius(3)
 B、pC->setRadius(3)
 C、pC.setRadius(3)
 D、c.setRadius(3)
 参考资料【 】
 4、【判断题】说明或定义对象时,类名前面不需要加class关键字。
 A、正确
 B、错误
 参考资料【 】
 2-07小节测试
 1、【单选题】在类定义的外部,可以被访问的成员有( )。
 A、所有类成员
 B、private或protected的类成员
 C、public的类成员
 D、public或private的类成员
 参考资料【 】
 2、【单选题】在类的定义形式中,数据成员、成员函数和( )组成了类定义体。
 A、成员的访问控制信息
 B、公有消息
 C、私有消息
 D、保护消息
 参考资料【 】
 3、【多选题】类的成员函数中可以直接访问本类的( )。
 A、公有成员
 B、保护成员
 C、私有成员函数
 D、私有成员变量
 参考资料【 】
 4、【判断题】使用关键字class定义的类中默认的访问权限是私有(private)的。
 A、正确
 B、错误
 参考资料【 】
 2-09小节测试
 1、【单选题】下面对析构函数的正确描述是( )。
 A、系统不能提供默认的析构函数
 B、析构函数必须由用户定义
 C、析构函数没有参数
 D、析构函数可以设置默认参数
 参考资料【 】
 2、【单选题】对于任意一个类,析构函数的个数最多为( )。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 3、【判断题】构造函数和析构函数都不能重载。
 A、正确
 B、错误
 参考资料【 】
 2-10小节测试
 1、【单选题】通常拷贝构造函数的参数表是( )。
 A、某个对象名
 B、某个对象的成员名
 C、某个对象的引用名
 D、某个对象的指针名
 参考资料【 】
 2、【单选题】关于下面程序段说法正确的是( )class X{private:int n;public:X(X);};X::X(Xx) {n=x.n}X obj1,obj2(obj1);
 A、语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2
 B、语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1
 C、X(X&x)中的&符号可以删除
 D、X(X&x)函数中不能访问对象的私有成员
 参考资料【 】
 3、【多选题】系统提供的默认拷贝构造函数实现的是“浅拷贝”,下列关于浅拷贝的说法中正确的是( )。
 A、当一个类中有指针成员变量时,浅拷贝有可能会导致一片内存被重复释放
 B、当一个类中有指针成员变量时,浅拷贝有可能导致一个对象中保存的数据不正确
 C、如果一个类中只有int型和double型的成员变量,则浅拷贝不会出现任何问题
 D、如果一个类中有一个成员变量是char型数组,则使用浅拷贝会存在问题
 参考资料【 】
 4、【判断题】拷贝构造函数通常使用已有对象的引用来初始化创建中的对象。
 A、正确
 B、错误
 参考资料【 】
 2-11小节测试
 1、【多选题】下列说法中正确的是( )。
 A、成员函数的声明必须放在类体中
 B、成员函数的声明可以放在类体中也可以放在类体外
 C、成员函数的实现必须放在类体中
 D、成员函数的实现可以放在类体中也可以放在类体外
 参考资料【 】
 2、【判断题】一般将C++中的类声明和类实现分别放到两个文件中。
 A、正确
 B、错误
 参考资料【 】
 2-12小节测似
 1、【多选题】下列关于类的常量数据成员的说法中,正确的是( )。
 A、一个类的常量数据成员必须在类体中初始化
 B、一个类的常量数据成员由该类的所有对象共享
 C、一个类的常量数据成员对于该类的不同对象可以取不同的值
 D、使用const关键字可以将一个数据成员声明为常量数据成员
 参考资料【 】
 2、【判断题】类的常量数据成员的值只能在创建对象时初始化,初始化后不得再修改。
 A、正确
 B、错误
 参考资料【 】
 2-13小节测试
 1、【单选题】下列静态数据成员的特性中,( )是错误的。
 A、说明静态数据成员时前边要加关键字static来修饰
 B、静态数据成员在类体外进行初始化
 C、引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
 D、静态数据成员不是所有对象所共有的
 参考资料【 】
 2、【单选题】静态成员遵循类的其他成员所遵循的访问限制,除了( )。
 A、静态成员函数
 B、静态数据成员初始化
 C、私有静态数据成员
 D、公有静态成员函数
 参考资料【 】
 3、【多选题】下列关于类的静态数据成员的说法中,正确的是( )。
 A、静态数据成员的值初始化后不能再修改
 B、静态数据成员必须在类体外定义和初始化
 C、使用static关键字可以将一个数据成员声明为静态数据成员
 D、静态数据成员的访问控制权限可以是公有、私有或保护
 参考资料【 】
 4、【判断题】可以在类的构造函数中对静态数据成员进行初始化。
 A、正确
 B、错误
 参考资料【 】
 2-14小节测试
 1、【单选题】对静态成员的不正确描述是( )。
 A、静态成员不属于对象,是类的共享成员
 B、静态数据成员要在类外定义和初始化
 C、调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
 D、非静态成员函数也可以操作静态数据成员
 参考资料【 】
 2、【单选题】( )只能访问静态成员变量,不能访问非静态成员变量。
 A、静态函数
 B、虚函数
 C、构造函数
 D、析构函数
 参考资料【 】
 3、【多选题】对静态成员的错误描述是( )。
 A、静态成员不属于对象,是类的共享成员
 B、静态数据成员要在类外定义和初始化
 C、调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
 D、静态成员函数可以操作非静态数据成员
 参考资料【 】
 4、【判断题】类的静态成员函数中不能访问非静态成员。
 A、正确
 B、错误
 参考资料【 】
 2-15小节测试
 1、【单选题】关于this指针的说法错误的是( )。
 A、this指针必须显示说明
 B、当创建一个对象后,this指针就指向该对象
 C、成员函数拥有this指针
 D、静态成员函数不拥有this指针
 参考资料【 】
 2、【单选题】this指针是C++实现( )的一种机制。
 A、抽象
 B、封装
 C、继承
 D、重载
 参考资料【 】
 3、【判断题】已知Circle类对象c,Circle类中有一个setCenter成员函数,如果c.setCenter(…)返回值仍然是c,则setCenter函数中的return语句应写作return this;。
 A、正确
 B、错误
 参考资料【 】
 2-16小节测试
 1、【单选题】下面选项中,不是类的成员函数为( )。
 A、构造函数
 B、析构函数
 C、友元函数
 D、缺省参数的构造函数
 参考资料【 】
 2、【单选题】下面对友元的错误描述是( )。
 A、关键字friend用于声明友元
 B、一个类的成员函数可以是另一个类的友元
 C、友元函数访问对象的成员不受访问特性影响
 D、友元函数通过this指针访问对象成员
 参考资料【 】
 3、【判断题】某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
 A、正确
 B、错误
 参考资料【 】
 2-17小节测试
 1、【多选题】下面对对象成员的正确描述是( )。
 A、在一个类中可以声明本类的对象成员
 B、对象成员的声明方法与普通数据成员的声明方法相同
 C、在一个类中可以声明本类的指针数据成员
 D、如果对象成员的构造函数有参数,则必须在声明该对象成员的同时给其构造函数传递参数值
 参考资料【 】
 2-18小节测试
 1、【单选题】下列关于对象数组的描述中,错误的是( )。
 A、对象数组的下标是从0开始的
 B、对象数组的数组名是一个常量指针
 C、对象数组的每个元素是同一个类的对象
 D、对象数组只能赋初值,而不能在定义后赋值
 参考资料【 】
 2、【多选题】下面对对象成员的正确描述是( )。
 A、可以在构造函数的初始化列表中给出对象成员的初始化
 B、可以在构造函数的函数体中给出对象成员的初始化
 C、如果一个对象成员有无参构造函数,则可以省略对象成员的初始化语句
 D、若A类中有B类对象成员,则在创建A类对象时,先执行B类的构造函数,再执行A类的构造函数
 参考资料【 】
 3、【判断题】类的成员函数中可以直接访问对象成员中的私有成员。
 A、正确
 B、错误
 参考资料【 】
 2-19小节测试
 1、【单选题】下列关于运算符重载的描述中,()是正确的。
 A、运算符重载可以改变操作数的个数
 B、运算符重载可以改变优先级
 C、运算符重载可以改变结合性
 D、运算符重载不可以改变语法结构
 参考资料【 】
 2、【单选题】下列运算符中,()运算符在C++中不能重载。
 A、?:
 B、+
 C、-
 D、=
 参考资料【 】
 3、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、C++中的所有运算符都可以重载
 B、不仅可以重载C++中已有的运算符,还可以创建新的运算符
 C、运算符重载实质上就是函数重载
 D、运算符重载的函数名是operator<重载的运算符>
 参考资料【 】
 4、【判断题】多数运算符可以重载,个别运算符不能,运算符重载是通过函数定义实现的。
 A、正确
 B、错误
 参考资料【 】
 2-20小节测试
 1、【判断题】运算符重载是一种特殊的函数重载,其函数名为operator重载运算符。
 A、正确
 B、错误
 参考资料【 】
 2-21小节测试
 1、【单选题】友元运算符obj1obj2被C++编译器解释为()。
 A、operator>(obj1,obj2)
 B、>(obj1,obj2)
 C、jobj2.operator>(obj1)
 D、obj1.operator(obj2)
 参考资料【 】
 2、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、类友元形式重载的运算符,重载函数中的this指针指向第一个运算数
 B、类友元形式重载的运算符,重载函数中可以直接访问类中的私有成员
 C、类友元形式重载的运算符,重载函数的参数个数与运算符的实际操作数个数相同
 D、所有运算符都可以以类友元形式进行重载
 参考资料【 】
 3、【判断题】类非成员函数形式的运算符重载函数通常采用友元函数,是为了在运算符重载中方便访问类中的非公有成员。
 A、正确
 B、错误
 参考资料【 】
 2-22小节测试
 1、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、赋值运算符和下标运算符只能重载为类的成员函数
 B、赋值运算符和下标运算符只能重载为类的友元函数
 C、赋值运算符重载时一般以引用方式返回this,表示返回赋值运算符的左操作数
 D、使用重载的赋值运算符时,左操作数一定是自定义类型
 参考资料【 】
 2、【判断题】运算符[]只能用成员运算符来重载,不能用友元运算符来重载。
 A、正确
 B、错误
 参考资料【 】
 第二章单元测试
 1、【单选题】有关类和对象的说法不正确的是( )。
 A、对象是类的一个实例
 B、一个类只能有一个对象
 C、任何一个对象只能属于一个具体的类
 D、类与对象的关系和数据类型和变量的关系相似
 参考资料【 】
 2、【单选题】下列关于C++类的描述中错误的是( )。
 A、类与类之间可以通过一些手段进行通信和联络
 B、类用于描述事物的属性和对事物的操作
 C、类与类之间必须是平等的关系,而不能组成层次关系
 D、类与类之间可以通过封装而具有明确的独立性
 参考资料【 】
 3、【单选题】空类的声明( )是正确的。
 A、class类名;
 B、class类名{};
 C、class类名{}
 D、class类名
 参考资料【 】
 4、【单选题】假定X为一个类,执行X a[3],p[2];语句时会自动调用该类的构造函数( )次。
 A、2
 B、3
 C、4
 D、5
 参考资料【 】
 5、【单选题】对于下面定义的类A在函数f()中将对象成员n的值修改为60的语句应该是( )class A{public:A(int x){n=x;}void SetNum(int n1){n=n1;}private:int n;}int f() { Aptr=new A(6); }
 A、A(60)
 B、SetNum(60)
 C、ptr->SetNum(60)
 D、ptr->n=60
 参考资料【 】
 6、【单选题】在下列关键字中,用以说明类中公有成员的是( )。
 A、public
 B、private
 C、protected
 D、friend
 参考资料【 】
 7、【单选题】对于任意一个类,析构函数的个数最多为( )。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 8、【单选题】缺省析构函数的函数体是( )。
 A、不存在
 B、随机产生的
 C、空的
 D、无法确定的
 参考资料【 】
 9、【单选题】假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。
 A、MyClass(MyClass x)
 B、MyClass&(MyClass x)
 C、MyClass(MyClass &x)
 D、MyClass(MyClass *x)
 参考资料【 】
 10、【单选题】静态成员遵循类的其他成员所遵循的访问限制,除了( )。
 A、静态成员函数
 B、静态数据成员初始化
 C、私有静态数据成员
 D、公有静态成员函数
 参考资料【 】
 11、【单选题】( )只能访问静态成员变量,不能访问非静态成员变量。
 A、静态函数
 B、虚函数
 C、构造函数
 D、析构函数
 参考资料【 】
 12、【单选题】this指针是C++实现( )的一种机制。
 A、抽象
 B、封装
 C、继承
 D、重载
 参考资料【 】
 13、【单选题】友元访问类对象的成员时使用( )。
 A、类的成员名
 B、“this->成员名”的形式
 C、“类名::成员名”的形式
 D、“对象名.成员名”的形式
 参考资料【 】
 14、【单选题】下列运算符中,()运算符在C++中不能重载。
 A、?:
 B、+
 C、-
 D、=
 参考资料【 】
 15、【单选题】友元运算符obj1obj2被C++编译器解释为()。
 A、operator>(obj1,obj2)
 B、>(obj1,obj2)
 C、jobj2.operator>(obj1)
 D、obj1.operator(obj2)
 参考资料【 】
 16、【多选题】下列( )不是构造函数的特征。
 A、构造函数在创建对象时自动调用
 B、构造函数可以重载
 C、构造函数不可以设置默认参数
 D、构造函数必须指定函数类型
 参考资料【 】
 17、【多选题】类的成员函数中可以直接访问本类的( )。
 A、公有成员
 B、保护成员
 C、私有成员函数
 D、私有成员变量
 参考资料【 】
 18、【多选题】系统提供的默认拷贝构造函数实现的是“浅拷贝”,下列关于浅拷贝的说法中正确的是( )。
 A、当一个类中有指针成员变量时,浅拷贝有可能会导致一片内存被重复释放
 B、当一个类中有指针成员变量时,浅拷贝有可能导致一个对象中保存的数据不正确
 C、如果一个类中只有int型和double型的成员变量,则浅拷贝不会出现任何问题
 D、如果一个类中有一个成员变量是char型数组,则使用浅拷贝会存在问题
 参考资料【 】
 19、【多选题】下面对友元的正确描述是( )。
 A、关键字friend用于声明友元
 B、一个类的成员函数可以是另一个类的友元
 C、友元函数访问对象的成员不受访问特性影响
 D、友元函数通过this指针访问对象成员
 参考资料【 】
 20、【判断题】函数的定义不可以嵌套,类的定义可以嵌套。
 A、正确
 B、错误
 参考资料【 】
 21、【判断题】当建立一个新对象时,程序不会自动调用任何函数。
 A、正确
 B、错误
 参考资料【 】
 22、【判断题】使用指向对象的指针来访问类的成员,则必须使用的运算符是-。
 A、正确
 B、错误
 参考资料【 】
 23、【判断题】在类内部定义的public数据可以在类外进行存取。
 A、正确
 B、错误
 参考资料【 】
 24、【判断题】为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义构造函数。
 A、正确
 B、错误
 参考资料【 】
 25、【判断题】在类体外定义成员函数时需要通过域运算符指定该成员函数所属的类。
 A、正确
 B、错误
 参考资料【 】
 26、【判断题】类的静态成员变量只能在静态成员函数中使用。
 A、正确
 B、错误
 参考资料【 】
 27、【判断题】运算符[]只能用成员运算符来重载,不能用友元运算符来重载。
 A、正确
 B、错误
 参考资料【 】
 3-01小节测试
 1、【单选题】在C++中,类与类之间的继承关系具有( )。
 A、自反性
 B、对称性
 C、传递性
 D、反对称性
 参考资料【 】
 2、【单选题】对基类和派生类的描述中错误的是( )。
 A、派生类是基类的具体化
 B、基类继承了派生类的属性
 C、派生类是基类定义的延续
 D、派生类是基类的特殊化
 参考资料【 】
 3、【单选题】在C++中,能被派生类继承的函数是( )。
 A、成员函数
 B、构造函数
 C、析构函数
 D、拷贝构造函数
 参考资料【 】
 4、【多选题】下列关于类的继承描述中,( )是正确的。
 A、派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
 B、派生类也是基类,但基类不一定具有派生类的全部属性和方法
 C、继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
 D、一个基类可以有多个派生类,一个派生类可以有多个基类
 参考资料【 】
 5、【判断题】C++语言中,既允许单继承,又允许多继承。
 A、正确
 B、错误
 参考资料【 】
 3-02小节测试
 1、【多选题】在派生类中可以直接访问基类的()。
 A、公有成员
 B、保护成员
 C、私有成员
 D、友元成员
 参考资料【 】
 2、【判断题】派生类中至少包含了它的所有基类的成员(除构造函数和析构函数外),在这些成员中可能有的是不可访问。
 A、正确
 B、错误
 参考资料【 】
 3-03小节测试
 1、【单选题】在创建派生类对象时,构造函数的执行顺序是( )。
 A、对象成员构造函数、基类构造函数、派生类本身的构造函数
 B、派生类本身的构造函数、基类构造函数、对象成员构造函数
 C、基类构造函数、派生类本身的构造函数、对象成员构造函数
 D、基类构造函数、对象成员构造函数、派生类本身的构造函数
 参考资料【 】
 2、【单选题】派生类的构造函数的成员初始化列表中,不能包含()。
 A、基类的构造函数
 B、派生类中子对象的初始化
 C、基类的子对象初始化
 D、派生类中一般数据成员的初始化
 参考资料【 】
 3、【多选题】下列描述中,正确的是( )。
 A、创建派生类对象时会先调用基类构造函数,再调用派生类构造函数
 B、创建派生类对象时会先调用派生类构造函数,再调用基类构造函数
 C、如果基类构造函数有参数,则必须在派生类构造函数的初始化列表中写上基类构造函数的调用语句
 D、如果派生类构造函数的初始化列表中没写基类构造函数的调用,则表示调用基类的无参构造函数
 参考资料【 】
 4、【判断题】构造函数可以被继承。
 A、正确
 B、错误
 参考资料【 】
 3-05小节测试
 1、【单选题】下列关于类的继承描述中,( )是错误的。
 A、派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
 B、派生类也是基类,但基类不一定具有派生类的全部属性和方法
 C、继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
 D、一个基类可以有多个派生类,一个派生类可以有多个基类
 参考资料【 】
 2、【单选题】当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、友元
 参考资料【 】
 3、【单选题】下面程序段中,说法正确的是( )class location{ public : int GetX(); };class rectangle:private location { public: int GetW(); };
 A、类rectangle的私有派生类是location
 B、类rectangle中的public成员在类 location中是私有的
 C、类location中的public成员在类 rectangle中是不可访问的
 D、viod f( ) { Rectangle r; int X=r .GetX( ); } 其中int X = r .GetX( );是非法语句
 参考资料【 】
 4、【多选题】当用public继承从基类派生一个类时,基类的()成员可被派生类中的成员函数访问。
 A、protected
 B、public
 C、private
 D、friend
 参考资料【 】
 5、【判断题】派生类对基类继承的成员函数进行重定义后,则通过派生类对象和基类对象调用的都是重定义后的成员函数。
 A、正确
 B、错误
 参考资料【 】
 3-06小节测试
 1、【单选题】对于多重继承,有( )。
 A、一个派生类只能有一个基类
 B、一个基类只能产生一个派生类
 C、一个基类必须产生多个派生类
 D、一个派生类可有多个基类
 参考资料【 】
 2、【单选题】在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。
 A、完全相同
 B、完全不同
 C、部分相同,部分不同
 D、以上都不对
 参考资料【 】
 3、【多选题】下面描述中,正确的是( )。
 A、多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序相反
 B、多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序一致
 C、多重继承中创建派生类对象时各基类构造函数的调用顺序与基类构造函数在初始化列表中的出现顺序一致
 D、多重继承中,如果派生类的初始化列表中没有某个基类构造函数的调用语句,则表示调用该基类的无参构造函数
 参考资料【 】
 4、【判断题】多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。
 A、正确
 B、错误
 参考资料【 】
 3-07小节测试
 1、【单选题】关于多继承二义性的描述中,错误的是()。
 A、一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性
 B、解决二义性的最常用的方法是对成员名的限定法
 C、基类和派生类同时出现的同名函数,也存在二义性问题
 D、一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类, 对该基类成员进行访问时,可能出现二义性
 参考资料【 】
 2、【判断题】多重继承中的二义性问题是由于一个派生类从不同基类中继承了同名成员变量或相同函数原型的成员函数。
 A、正确
 B、错误
 参考资料【 】
 3-08小节测试
 1、【单选题】下列虚基类的声明中正确的是( )。
 A、class virtual B:public A
 B、virtual class B:public
 C、class B:public A virtual
 D、class B: virtual public A
 参考资料【 】
 2、【单选题】设置虚基类的目的是()。
 A、简化程序
 B、消除二义性
 C、提高运行效率
 D、减少目标代码
 参考资料【 】
 3、【多选题】下面描述中,正确的是( )。
 A、虚拟继承可以解决多重继承中的二义性问题
 B、类层次中的类从虚基类中直接继承虚基类的成员
 C、在有虚基类的类层次中,创建派生类对象时,会先调用基类的构造函数再调用虚基类的构造函数
 D、在有虚基类的类层次中,销毁派生类对象时析构函数的调用顺序与创建派生类对象时构造函数的调用顺序相反
 参考资料【 】
 4、【判断题】虚基类是用来解决多继承中公共基类在派生类中产生多份基类成员的问题。
 A、正确
 B、错误
 参考资料【 】
 3-09小节测试
 1、【单选题】在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()。
 A、派生类的对象可以赋给基类对象
 B、派生类的对象可以初始化基类的引用
 C、派生类的对象可以直接访问基类的成员
 D、派生类的对象的地址可以赋给指向基类的指针
 参考资料【 】
 2、【单选题】下面( )的叙述不符合赋值兼容规则。
 A、派生类的对象可以赋值给基类的对象
 B、基类的对象可以赋值给派生类的对象
 C、派生类的对象可以初始化基类的对象
 D、派生类的对象的地址可以赋值给指向基类的指针
 参考资料【 】
 3、【多选题】下列选项中,属于类型兼容特点的选项包括( )。
 A、可以用派生类对象给基类对象赋值
 B、可以用派生类对象地址给基类指针赋值
 C、可以用基类对象给派生类对象赋值
 D、可以用基类对象初始化派生类引用
 参考资料【 】
 3-10小节测试
 1、【判断题】继承性是指同样的消息被不同对象接收时可产生不同的行为。
 A、正确
 B、错误
 参考资料【 】
 3-11小节测试
 1、【单选题】动态联编所支持的多态性是( )。
 A、虚函数
 B、继承
 C、编译时的多态性
 D、运行时的多态性
 参考资料【 】
 2、【单选题】C++有( )种联编方式。
 A、1
 B、2
 C、3
 D、4
 参考资料【 】
 3、【单选题】多态调用是指( )。
 A、以任何方式调用一个虚函数
 B、以任何方式调用一个纯虚函数
 C、借助于指向对象的基类指针或引用调用一个虚函数
 D、借助于指向对象的基类指针或引用调用一个纯虚函数
 参考资料【 】
 4、【多选题】下列描述正确的是( )。
 A、多态性是通过动态绑定实现的
 B、多态性是通过静态绑定实现的
 C、动态绑定是在程序执行时进行绑定
 D、静态绑定是在程序执行时进行绑定
 参考资料【 】
 5、【判断题】通过指针或引用可以调用不同对象相同名称的函数,但可导致完全不同的行为的现象称为二义性。
 A、正确
 B、错误
 参考资料【 】
 3-12小节测试
 1、【单选题】若析构函数是虚函数,则delete对析构函数的调用采用( )。
 A、静态联编
 B、动态联编
 C、重载函数
 D、多重函数
 参考资料【 】
 2、【多选题】下列描述正确的是( )。
 A、使用基类指针释放其所指向的派生类对象时,必须将析构函数声明为虚函数
 B、为了减少错误,在定义类时最好将每个类的析构函数都声明为虚函数
 C、当类里包含一个虚函数时,应把析构函数也声明为虚函数
 D、类中包含虚函数会增加对象的尺寸
 参考资料【 】
 3、【判断题】构造函数和析构函数均不能被说明为虚函数。
 A、正确
 B、错误
 参考资料【 】
 3-13小节测试
 1、【单选题】下面函数原型声明中,( )声明了fun为纯虚函数。
 A、void fun()=0;
 B、virtual void fun()=0;
 C、virtual void fun();
 D、virtual void fun(){};
 参考资料【 】
 2、【单选题】若一个类中含有纯虚函数,则该类称为( )。
 A、基类
 B、纯基类
 C、派生类
 D、抽象类
 参考资料【 】
 3、【单选题】关于抽象类, 下列表述正确的是( )。
 A、抽象类的成员函数中至少有一个没有实现的函数(即无函数体定义的函数)
 B、派生类必须实现作为基类的抽象类中的纯虚函数
 C、派生类不可能成为抽象类
 D、抽象类不能用于定义对象
 参考资料【 】
 4、【多选题】假设A为抽象类,下列语句( )是正确的。
 A、A fun(int);
 B、A *p;
 C、int fun(A&);
 D、A Obj;
 参考资料【 】
 5、【判断题】构造函数说明为纯虚函数是没有意义的。
 A、正确
 B、错误
 参考资料【 】
 第三章 单元测试
 1、【单选题】在C++中,能被派生类继承的函数是( )。
 A、成员函数
 B、构造函数
 C、析构函数
 D、拷贝构造函数
 参考资料【 】
 2、【单选题】基类和派生类可以分别叫做( )。
 A、“大类”和“小类”
 B、“父类”和“子类”
 C、“小类”和“大类”
 D、“子类”和“父类”
 参考资料【 】
 3、【单选题】派生类的构造函数的成员初始化列表中,不能包含()。
 A、基类的构造函数
 B、派生类中子对象的初始化
 C、基类的子对象初始化
 D、派生类中一般数据成员的初始化
 参考资料【 】
 4、【单选题】派生类的对象对它的基类成员中()是可以访问的。
 A、公有继承的公有成员
 B、公有继承的私有成员
 C、公有继承的保护成员
 D、私有继承的公有成员
 参考资料【 】
 5、【单选题】下列说法中错误的是( )。
 A、公有继承时基类中的public成员在派生类中是public的
 B、公有继承时基类中的private成员在派生类中是不可访问的
 C、私有继承时基类中的public成员在派生类中是private的
 D、私有继承时基类中的public成员在派生类中是protected的
 参考资料【 】
 6、【单选题】在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。
 A、完全相同
 B、完全不同
 C、部分相同,部分不同
 D、以上都不对
 参考资料【 】
 7、【单选题】设置虚基类的目的是()。
 A、简化程序
 B、消除二义性
 C、提高运行效率
 D、减少目标代码
 参考资料【 】
 8、【单选题】下面( )的叙述不符合赋值兼容规则。
 A、派生类的对象可以赋值给基类的对象
 B、基类的对象可以赋值给派生类的对象
 C、派生类的对象可以初始化基类的对象
 D、派生类的对象的地址可以赋值给指向基类的指针
 参考资料【 】
 9、【单选题】关于函数的描述中,()是正确的。
 A、派生类的虚函数与基类的虚函数具有不同的参数个数和类型
 B、基类中说明了虚函数后,派生类中其对应的函数一定要说明为虚函数
 C、虚函数是一个成员函数
 D、虚函数是一个static类型的成员函数
 参考资料【 】
 10、【单选题】若析构函数是虚函数,则delete对析构函数的调用采用( )。
 A、静态联编
 B、动态联编
 C、重载函数
 D、多重函数
 参考资料【 】
 11、【单选题】()是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的可访问性的规定是相同的。
 A、纯虚函数
 B、虚析构函数
 C、虚构造函数
 D、静态成员函数
 参考资料【 】
 12、【单选题】下列描述中,()是抽象类的特性。
 A、可以说明虚函数
 B、可以定义友元函数
 C、可以进行构造函数重载
 D、不能说明其对象
 参考资料【 】
 13、【单选题】下面哪个基类中的成员函数表示纯虚函数( )。
 A、virtual void vf(int)
 B、void vf(int)=0
 C、virtual void vf()=0
 D、virtual void vf(int)
 参考资料【 】
 14、【单选题】多态调用是指( )。
 A、以任何方式调用一个虚函数
 B、以任何方式调用一个纯虚函数
 C、借助于指向对象的基类指针或引用调用一个虚函数
 D、借助于指向对象的基类指针或引用调用一个纯虚函数
 参考资料【 】
 15、【单选题】在C++中,要实现动态联编,可以使用( )调用虚函数。
 A、类名
 B、派生类指针
 C、对象名
 D、基类指针
 参考资料【 】
 16、【多选题】在C++中,不能被派生类继承的函数是( )。
 A、成员函数
 B、构造函数
 C、析构函数
 D、拷贝构造函数
 参考资料【 】
 17、【多选题】基类中的公有成员可能是派生类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、友元成员
 参考资料【 】
 18、【多选题】下面描述中,正确的是( )。
 A、多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序相反
 B、多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序一致
 C、多重继承中创建派生类对象时各基类构造函数的调用顺序与基类构造函数在初始化列表中的出现顺序一致
 D、多重继承中,如果派生类的初始化列表中没有某个基类构造函数的调用语句,则表示调用该基类的无参构造函数
 参考资料【 】
 19、【多选题】下面描述中,错误的是( )。
 A、虚函数是没有实现的函数
 B、纯虚函数是没有实现的函数
 C、抽象类可以用于创建对象
 D、抽象类指针可以指向不同的派生类
 参考资料【 】
 20、【判断题】在公有继承中,基类中只有公有成员对派生类对象是可见的。
 A、正确
 B、错误
 参考资料【 】
 21、【判断题】在保护派生中,基类权限为private的成员在派生类中权限也为private。
 A、正确
 B、错误
 参考资料【 】
 22、【判断题】多重继承中的二义性问题是由于一个派生类从不同基类中继承了同名成员变量或相同函数原型的成员函数。
 A、正确
 B、错误
 参考资料【 】
 23、【判断题】继承性是指同样的消息被不同对象接收时可产生不同的行为。
 A、正确
 B、错误
 参考资料【 】
 24、【判断题】定义虚函数所用的关键字是virtual。
 A、正确
 B、错误
 参考资料【 】
 25、【判断题】定义纯虚函数所用的关键字是purevirtual。
 A、正确
 B、错误
 参考资料【 】
 4-01小节测试
 1、【单选题】下列类中( )是输入/输出流类iostream的派生类。
 A、fstream
 B、ofstream
 C、ifstream
 D、ostream
 参考资料【 】
 2、【单选题】进行文件操作时需要包含()头文件。
 A、iostream
 B、fstream
 C、stdio
 D、stdlib
 参考资料【 】
 3、【多选题】下面描述中,正确的是( )。
 A、可以定义ios类的对象
 B、istream对象用来实现输入操作
 C、ios是fstream的直接基类
 D、istream是ifstream的直接基类
 参考资料【 】
 4、【判断题】C++的I/O系统通过流的机制实现文件和控制台的输入输出操作。
 A、正确
 B、错误
 参考资料【 】
 4-02小节测试
 1、【单选题】在下列选项中( )不是ostream类的对象。
 A、cin
 B、cerr
 C、clog
 D、cout
 参考资料【 】
 2、【单选题】要求打开文件 d:\file.dat,可写入数据,正确的语句是( )。
 A、ifstream infile("d:\file.dat", ios::in);
 B、ifstream infile("d:\file.dat", ios::in);
 C、ofstream infile("d:\file.dat", ios::out);
 D、fstream infile("d:\file.dat", ios::in| ios::out);
 参考资料【 】
 3、【多选题】下列输入输出流类对象中,带缓冲区支持的包括( )。
 A、cin
 B、cerr
 C、clog
 D、cout
 参考资料【 】
 4、【判断题】cout属于标准输出流,而cerr和clog则不属于标准输出流。
 A、正确
 B、错误
 参考资料【 】
 4-03小节测试
 1、【单选题】若定义cinstr;当输入 Microsoft Visual Studio 6.0! 所得的结果是str=()。
 A、Microsoft Visual Studio 6.0!
 B、Microsoft
 C、Microsoft Visual
 D、Microsoft Visual Studio 6.0
 参考资料【 】
 2、【多选题】用于输入输出的运算符包括( )。
 A、<<
 B、++
 C、->
 D、>>
 参考资料【 】
 3、【判断题】预定义的提取符和插入符是可以重载的。
 A、正确
 B、错误
 参考资料【 】
 4-07小节测试
 1、【判断题】getline()函数从流中提取终止字符,但终止字符被丢弃。
 A、正确
 B、错误
 参考资料【 】
 4-08小节测试
 1、【单选题】假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( )。
 A、outfile.write((float ) &data, sizeof(float));
 B、outfile.write((float ) &data, data);
 C、outfile.write((char ) &data, sizeof(float));
 D、outfile.write((char ) &data, data);
 参考资料【 】
 4-09小节测试
 1、【单选题】read函数的功能是从输入流中读取( )。
 A、一个字符
 B、当前字符
 C、一行字符
 D、指定若干个字符
 参考资料【 】
 4-10小节测试
 1、【多选题】已知f是以二进制读写方式打开的文件流对象,且有int型变量a,则下列选项中能正确进行文件读写操作的语句包括( )。
 A、f.write((char)a, sizeof(a));
 B、f.write((char)&a, sizeof(a));
 C、f.read((char)a, sizeof(a));
 D、f.read((char)&a, sizeof(a));
 参考资料【 】
 4-11小节测试
 1、【多选题】已知in是ifstream对象,则下列语句正确的是( )。
 A、in.seekg(5);
 B、in.seekg(5, ios::beg);
 C、in.seekg(5, ios::end);
 D、in.seekg(-5);
 参考资料【 】
 4-13小节测试
 1、【多选题】下列插入和提取运算符重载的函数原型中,正确的是( )。
 A、istream& operator>>(istream&, 自定义类型&)
 B、istream& operator<<(istream&, 自定义类型&)
 C、ostream& operator>>(ostream&, 自定义类型&)
 D、ostream& operator<<(ostream&, 自定义类型&)
 参考资料【 】
 第四章单元测试
 1、【单选题】进行文件操作时需要包含()头文件。
 A、iostream
 B、fstream
 C、stdio
 D、stdlib
 参考资料【 】
 2、【单选题】当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。
 A、ios::in
 B、ios::out
 C、ios::trunk
 D、ios::binary
 参考资料【 】
 3、【单选题】在C++中,打开一个文件就是将这个文件与一个()建立关联;关闭一个文件就是取消这种关联。
 A、流
 B、类
 C、结构
 D、对象
 参考资料【 】
 4、【单选题】若定义cinstr;当输入 Microsoft Visual Studio 6.0! 所得的结果是str= ()。
 A、Microsoft Visual Studio 6.0!
 B、Microsoft
 C、Microsoft Visual
 D、Microsoft Visual Studio 6.0
 参考资料【 】
 5、【单选题】假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( )。
 A、outfile.write((float ) &data, sizeof(float));
 B、outfile.write((float ) &data, data);
 C、outfile.write((char ) &data, sizeof(float));
 D、outfile.write((char ) &data, data);
 参考资料【 】
 6、【单选题】read函数的功能是从输入流中读取( )。
 A、一个字符
 B、当前字符
 C、一行字符
 D、指定若干个字符
 参考资料【 】
 7、【多选题】下列打开文件的语句中,能创建文件的选项包括( )。
 A、ofstream f("file.txt", ios::out);
 B、ofstream f("file.txt");
 C、fstream f("file.txt", ios::out);
 D、ifstream f("file.txt",ios::out);
 参考资料【 】
 8、【多选题】用于输入输出的运算符包括( )。
 A、<<
 B、++
 C、->
 D、>>
 参考资料【 】
 9、【多选题】已知f是以二进制读写方式打开的文件流对象,且有int型变量a,则下列选项中能正确进行文件读写操作的语句包括( )。
 A、f.write((char)a, sizeof(a));
 B、f.write((char)&a, sizeof(a));
 C、f.read((char)a, sizeof(a));
 D、f.read((char)&a, sizeof(a));
 参考资料【 】
 10、【多选题】下列插入和提取运算符重载的函数原型中,正确的是( )。
 A、istream& operator>>(istream&, 自定义类型&)
 B、istream& operator<<(istream&, 自定义类型&)
 C、ostream& operator>>(ostream&, 自定义类型&)
 D、ostream& operator<<(ostream&, 自定义类型&)
 参考资料【 】
 11、【判断题】C++中ostream类的直接基类是ios。
 A、正确
 B、错误
 参考资料【 】
 12、【判断题】使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象。
 A、正确
 B、错误
 参考资料【 】
 13、【判断题】设要把一个文件输出流对象myFile与文件“f:\myText.txt”相关联,所用的C++语句是ifstream myFile(f:\myText.txt,ios::in|ios::out);
 A、正确
 B、错误
 参考资料【 】
 14、【判断题】预定义的提取符和插入符是可以重载的。
 A、正确
 B、错误
 参考资料【 】
 15、【判断题】getline()函数从流中提取终止字符,但终止字符被丢弃。
 A、正确
 B、错误
 参考资料【 】
 5-01小节测试
 1、【单选题】关于函数模板,描述错误的是( )。
 A、函数模板必须由程序员实例化为可执行的函数模板
 B、函数模板的实例化由编译器实现
 C、一个类定义中,只要有一个函数模板,则这个类是类模板
 D、类模板的成员函数都是函数模板
 参考资料【 】
 2、【单选题】下列的模板说明中,正确的是( )。
 A、template <typename T1, T2>
 B、template <class T1, T2>
 C、template <class T1, class T2>
 D、template <typename T1; typename T2>
 参考资料【 】
 3、【多选题】函数模板可以与()重载。
 A、函数模板
 B、普通函数
 C、类模板
 D、普通类
 参考资料【 】
 4、【判断题】使用模板可以减少重复劳动,提高代码重用率。
 A、正确
 B、错误
 参考资料【 】
 5-03小节测试
 1、【单选题】类模板的模板参数( )。
 A、只可作为数据成员的类型
 B、只可作为成员函数的返回类型
 C、只可作为成员函数的参数类型
 D、以上三者皆可
 参考资料【 】
 2、【单选题】一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
 A、函数模板
 B、模板函数
 C、类模板
 D、模板类
 参考资料【 】
 3、【多选题】下列关于类模板的描述中,正确的是( )。
 A、类模板的模板形参表中既可以有类型形参也可以有普通形参
 B、类模板的成员函数中可以用类型形参定义局部变量
 C、类模板中可以用类型形参声明成员变量
 D、类模板只能在类体中给出成员函数的实现
 参考资料【 】
 4、【判断题】类模板可以使用两种形式的参数,分别是类型参数和普通参数。
 A、正确
 B、错误
 参考资料【 】
 5-04小节测试
 1、【单选题】关于类模板,描述错误的是( )。
 A、类模板的模板形参表中既可以有类型形参,也可以有普通形参
 B、类模板从普通类派生,也可以从类模板派生
 C、根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
 D、函数的类模板参数须通过构造函数实例化
 参考资料【 】
 2、【单选题】建立类模板对象的实例化过程为( )。
 A、基类->派生类
 B、构造函数->对象
 C、模板类->对象
 D、模板类->模板函数
 参考资料【 】
 3、【判断题】类模板可以生成若干个模板类,每个模板类又可定义若干个对象。
 A、正确
 B、错误
 参考资料【 】
 5-05小节测试
 1、【单选题】类模板的静态数据成员由( )共享。
 A、一个类模板的所有模板类
 B、一个模板类的所有对象
 C、一个模板类的一个对象
 D、一个类模板的所有对象
 参考资料【 】
 2、【多选题】下列关于类模板的描述中,正确的是( )。
 A、类模板中可以有静态数据成员
 B、类模板的静态数据成员由所有该类模板实例化的模板类共享
 C、类模板的静态数据成员需要在类体外进行定义和初始化
 D、类模板中可以用类型形参声明静态数据成员
 参考资料【 】
 第五章单元测试
 1、【单选题】下面对模板的声明,正确的是( )。
 A、A.template<T>
 B、template<class T1,T2>
 C、template<class T1,class T2>
 D、template<classT1;classT2>
 参考资料【 】
 2、【单选题】类模板的模板参数( )。
 A、只可作为数据成员的类型
 B、只可作为成员函数的返回类型
 C、只可作为成员函数的参数类型
 D、以上三者皆可
 参考资料【 】
 3、【单选题】一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
 A、函数模板
 B、模板函数
 C、类模板
 D、模板类
 参考资料【 】
 4、【单选题】建立类模板对象的实例化过程为( )。
 A、基类->派生类
 B、构造函数->对象
 C、模板类->对象
 D、模板类->模板函数
 参考资料【 】
 5、【单选题】类模板的使用实际上是类模板实例化成一个具体的( )。
 A、类
 B、对象
 C、函数
 D、变量
 参考资料【 】
 6、【单选题】类模板的静态数据成员由( )共享。
 A、一个类模板的所有模板类
 B、一个模板类的所有对象
 C、一个模板类的一个对象
 D、一个类模板的所有对象
 参考资料【 】
 7、【多选题】下列的模板说明的头中,正确的是( )。
 A、template <typename T1, typename T2>
 B、template <class T1, T2>
 C、template <class T1, class T2>
 D、template <typename T1; typename T2>
 参考资料【 】
 8、【多选题】下列关于类模板的描述中,正确的是( )。
 A、类模板的模板形参表中既可以有类型形参也可以有普通形参
 B、类模板的成员函数中可以用类型形参定义局部变量
 C、类模板中可以用类型形参声明成员变量
 D、类模板只能在类体中给出成员函数的实现
 参考资料【 】
 9、【多选题】下列关于类模板的描述中,正确的是( )。
 A、类模板中可以有静态数据成员
 B、类模板的静态数据成员由所有该类模板实例化的模板类共享
 C、类模板的静态数据成员需要在类体外进行定义和初始化
 D、类模板中可以用类型形参声明静态数据成员
 参考资料【 】
 10、【判断题】模板定义中标识类型的参数必须用关键字Type修饰。
 A、正确
 B、错误
 参考资料【 】
 11、【判断题】函数模板可以与普通函数重载。
 A、正确
 B、错误
 参考资料【 】
 12、【判断题】类模板可以使用两种形式的参数,分别是类型参数和普通参数。
 A、正确
 B、错误
 参考资料【 】
 13、【判断题】类模板可以生成若干个模板类,每个模板类又可定义若干个对象。
 A、正确
 B、错误
 参考资料【 】
 客观题考试
 1、【单选题】在C++中,关于下列设置参数默认值的描述中,正确的是( )。
 A、不允许设置参数的默认值
 B、设置参数默认值只能在定义函数时设置
 C、设置参数默认值时,应该是先设置右边的再设置左边的
 D、设置参数默认值时,应该全部参数都设置
 参考资料【 】
 2、【单选题】对定义重载函数的下列要求中,( )是错误的。
 A、要求参数的个数不同
 B、要求参数中至少有一个类型不同
 C、要求参数个数相同时,参数类型不同
 D、要求函数的返回值不同
 参考资料【 】
 3、【单选题】下列对重载函数的描述中,( )是错误的。
 A、重载函数中不允许使用默认参数
 B、重载函数中编译时根据参数表进行选择
 C、不要使用重载函数来描述毫无相干的函数
 D、构造函数重载将会给初始化带来多种方式
 参考资料【 】
 4、【单选题】下列表示引用的方法中,( )是正确的。 已知:int k=1000;
 A、int &x=k;
 B、char &y;
 C、int &z=1000;
 D、float &t=&k;
 参考资料【 】
 5、【单选题】下列引用的定义中,( )是错误的。
 A、int i; int &j=i;
 B、int i; int &j; j=i;
 C、float i; float &j=i;
 D、char d; char &k=d;
 参考资料【 】
 6、【单选题】下面关于对象概念的描述中,( )是错误的。
 A、对象就是C语言中的结构变量
 B、对象代表着正在创建的系统中的一个实体
 C、对象是一个状态和操作(或方法)的封装体
 D、对象之间的信息传递是通过消息进行的
 参考资料【 】
 7、【单选题】C++对C语言做了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成面向对象。
 A、增加了一些新的运算符
 B、允许函数重载,并允许设置默认参数
 C、规定函数说明必须用原型
 D、引进类和对象的概念
 参考资料【 】
 8、【单选题】下面关于类概念的描述中,( )是错误的。
 A、类是抽象数据类型的实现
 B、类是具有共同行为的若干对象的统一描述体
 C、类是创建对象的样板
 D、类就是C语言中的结构体类型
 参考资料【 】
 9、【单选题】关于类和对象不正确的说法是( )。
 A、类是一种类型,它封装了数据和操作
 B、对象是类的实例
 C、一个类的对象只有一个
 D、一个对象必属于某个类
 参考资料【 】
 10、【单选题】有关类和对象的说法不正确的是( )。
 A、对象是类的一个实例
 B、一个类只能有一个对象
 C、任何一个对象只能属于一个具体的类
 D、类与对象的关系和数据类型和变量的关系相似
 参考资料【 】
 11、【单选题】面向对象程序设计思想的主要特征中不包括( )。
 A、封装性
 B、多态性
 C、继承性
 D、功能分解,逐步求精
 参考资料【 】
 12、【单选题】下列关于C++类的描述中错误的是( )。
 A、类与类之间可以通过一些手段进行通信和联络
 B、类用于描述事物的属性和对事物的操作
 C、类与类之间必须是平等的关系,而不能组成层次关系
 D、类与类之间可以通过封装而具有明确的独立性
 参考资料【 】
 13、【单选题】有下面类的说明,有错误的语句是( )。class X {
 A.int a=2;
 B.X();
 public:
 C.X(int val);
 D.~X();
 };
 A、A
 B、B
 C、C
 D、D
 参考资料【 】
 14、【单选题】下面说法正确的是( )。
 A、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
 B、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
 C、
 D、内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
 E、类的内联函数必须在类体内定义
 F、类的内联函数必须在类体外用关键字inline定义
 参考资料【 】
 15、【单选题】下列关于成员函数特征的描述中,错误的是( )。
 A、成员函数一定是内联函数
 B、成员函数可以重载
 C、成员函数可以设置参数的默认值
 D、成员函数可以是静态的
 参考资料【 】
 16、【单选题】下面说法中正确的是( )。
 A、当声明的内容不同时,声明同一个名字的两个类是允许的
 B、不完全声明的类也可以实例化
 C、声明同一个名字的两个类时,要求声明的内容也相同
 D、声明同一个名字的两个类是错误的
 参考资料【 】
 17、【单选题】空类的声明( )是正确的。
 A、class类名;
 B、class类名{};
 C、class类名{}
 D、class类名
 参考资料【 】
 18、【单选题】声明一个类的对象时,系统自动调用( )函数。
 A、成员函数
 B、构造函数
 C、析构函数
 D、普通函数
 参考资料【 】
 19、【单选题】下面对构造函数的不正确描述是( )。
 A、系统可以提供默认的构造函数
 B、构造函数可以有参数,所以可以有返回值
 C、构造函数可以重载
 D、构造函数可以设置默认参数
 参考资料【 】
 20、【单选题】已知X类.则当程序执行到语句X array[3];时,调用了( )次构造函数。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 21、【单选题】已知X类.则当程序执行到语句X array=new X[2];时,调用了( )次构造函数。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 22、【单选题】下列( )是构造函数的特征。
 A、构造函数在创建对象时自动调用
 B、构造函数不可以重载
 C、构造函数不可以设置默认参数
 D、构造函数必须指定函数类型
 参考资料【 】
 23、【单选题】已知X类,则当程序执行到语句 X array[3]; 时,调用了( )次构造函数。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 24、【单选题】下列( )不是构造函数的特征。
 A、构造函数的函数名与类名相同
 B、构造函数可以重载
 C、构造函数可以设置默认参数
 D、构造函数必须指定类型说明
 参考资料【 】
 25、【单选题】有关构造函数说法不正确的是( )。
 A、构造函数的名字和类的名字一样
 B、在创建对象时,系统自动调用构造函数
 C、构造函数无任何函数类型
 D、构造函数有且只有一个
 参考资料【 】
 26、【单选题】下列关于构造函数的描述中,错误的是( )。
 A、构造函数可以设置默认参数
 B、构造函数在说明类变量时自动执行
 C、构造函数可以对静态数据成员进行初始化
 D、构造函数可以重载
 参考资料【 】
 27、【单选题】对于任意一个类,构造函数的个数最少为( )。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 28、【单选题】( )的功能是对对象进行初始化。
 A、析构函数
 B、数据成员
 C、构造函数
 D、静态数据成员
 参考资料【 】
 29、【单选题】假定X为一个类,执行X a[3],p[2];语句时会自动调用该类的构造函数( )次。
 A、2
 B、3
 C、4
 D、5
 参考资料【 】
 30、【单选题】已知AA是一个类,则执行语句AA a;后( )。
 A、自动调用无参构造函数
 B、自动调用有参构造函数
 C、自动调用拷贝构造函数
 D、产生一个对象a,但不调用任何函数
 参考资料【 】
 31、【单选题】已知X类中的一个成员函数说明如下: void Set(Xa); 其中,Xa的含义是( )。
 A、a是指向X类对象的指针,用来作为Set()的形参
 B、将Xa的计算结果传递给Set()函数
 C、a是X类对象的引用,用来做为Set()的形参
 D、其它都不对
 参考资料【 】
 32、【单选题】已知类X中的一个成员函数说明如下: Void Set(X a); 其中,X a的含义是( )。
 A、a是指向X类对象的指针,用来作为Set()的形参
 B、将a的地址传递给Set()函数
 C、a是X类对象的引用,用来做为Set()的形参
 D、其它都不对
 参考资料【 】
 33、【单选题】对于下面定义的类A在函数f()中将对象成员n的值修改为60的语句应该是( )class A
 {
 public:
 A(int x){n=x;}
 void SetNum(int n1){n=n1;}
 private:
 int n;
 }
 int f() { Aptr=new A(6); }
 A、A(60)
 B、SetNum(60)
 C、ptr->SetNum(60)
 D、ptr->n=60
 参考资料【 】
 34、【单选题】在类定义的外部,可以被访问的成员有( )。
 A、所有类成员
 B、private或protected的类成员
 C、public的类成员
 D、public或private的类成员
 参考资料【 】
 35、【单选题】有关类的说法不正确的是( )。
 A、类是一种用户自定义的数据类型
 B、只有类中的成员函数才能存取类中的私有成员
 C、在类中,如果不做特别说明,所有的成员变量均为私有类型
 D、在类中,如果不做特别说明,所有的成员函数均为公有类型
 参考资料【 】
 36、【单选题】在类的定义形式中,数据成员、成员函数和( )组成了类定义体。
 A、成员的访问控制信息
 B、公有消息
 C、私有消息
 D、保护消息
 参考资料【 】
 37、【单选题】下列关于成员访问权限的描述中,不正确的是( )。
 A、公有数据成员和公有成员函数都可以通过类对象直接访问
 B、类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问
 C、保护成员在派生类中可以被访问,而私有成员不可以
 D、类或派生类的成员函数可以访问保护成员
 参考资料【 】
 38、【单选题】在下列关键字中,用以说明类中公有成员的是( )。
 A、public
 B、private
 C、protected
 D、friend
 参考资料【 】
 39、【单选题】运算符delete删除一个动态对象时( )。
 A、首先为该动态对象调用构造函数,再释放其占用的内存
 B、首先释放该动态对象占用的内存,再为其调用构造函数
 C、首先为该动态对象调用析构函数,再释放其占用的内存
 D、首先释放动态对象占用的内存,再为其调用析构函数
 参考资料【 】
 40、【单选题】撤消对象时,系统自动调用( )函数。
 A、成员函数
 B、构造函数
 C、析构函数
 D、普通函数
 参考资料【 】
 41、【单选题】下面对析构函数的正确描述是( )。
 A、系统不能提供默认的析构函数
 B、析构函数必须由用户定义
 C、析构函数没有参数
 D、析构函数可以设置默认参数
 参考资料【 】
 42、【单选题】有关析构函数的说法不正确的是( )。
 A、析构函数有且仅有一个
 B、析构函数和构造函数一样可以有形参
 C、析构函数的功能是用来释放一个对象
 D、析构函数无任何函数类型
 参考资料【 】
 43、【单选题】有关析构函数的说法正确的是( )。
 A、析构函数可以有多个
 B、析构函数和构造函数一样可以有形参
 C、析构函数的功能是用来释放一个对象
 D、析构函数的函数类型为void
 参考资料【 】
 44、【单选题】( )是析构函数的特征。
 A、析构函数可以有一个或多个参数
 B、析构函数定义只能在类体内
 C、析构函数名与类名不同
 D、一个类中只能定义一个析构函数
 参考资料【 】
 45、【单选题】对于任意一个类,析构函数的个数最多为( )。
 A、0
 B、1
 C、2
 D、3
 参考资料【 】
 46、【单选题】缺省析构函数的函数体是( )。
 A、不存在
 B、随机产生的
 C、空的
 D、无法确定的
 参考资料【 】
 47、【单选题】下面说法中正确的是( )。
 A、一个类只能定义一个构造函数,但可以定义多个析构函数
 B、一个类只能定义一个析构函数,但可以定义多个构造函数
 C、构造函数与析构函数同名,只要名字前加了一个求反符号(~)
 D、构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以
 参考资料【 】
 48、【单选题】通常拷贝构造函数的参数表是( )。
 A、某个对象名
 B、某个对象的成员名
 C、某个对象的引用名
 D、某个对象的指针名
 参考资料【 】
 49、【单选题】关于下面程序段说法正确的是( )class X
 {
 private:
 int n;
 public:
 X(X);
 };
 X::X(Xx) {n=x.n}
 X obj1,obj2(obj1);
 A、语句obj2(obj1);的功能是用对象obj1初始化具有相同类类型的对象obj2
 B、语句obj2(obj1);的功能是用对象obj2初始化具有相同类类型的对象obj1
 C、X(X&x)中的&符号可以删除
 D、X(X&x)函数中不能访问对象的私有成员
 参考资料【 】
 50、【单选题】假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。
 A、MyClass(MyClass x)
 B、MyClass&(MyClass x)
 C、MyClass(MyClass &x)
 D、MyClass(MyClass x)
 参考资料【 】
 51、【单选题】下列静态数据成员的特性中,( )是错误的。
 A、说明静态数据成员时前边要加关键字static来修饰
 B、静态数据成员在类体外进行初始化
 C、引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
 D、静态数据成员不是所有对象所共有的
 参考资料【 】
 52、【单选题】由于数据隐藏的需要,静态数据成员通常被说明为( )。
 A、私有的
 B、公有的
 C、保护的
 D、不可访问的
 参考资料【 】
 53、【单选题】下面对静态数据成员的描述中,正确的是( )。
 A、静态数据成员是类的所有对象共享的数据
 B、类的每个对象都有自己的静态数据成员
 C、类的不同对象有不同的静态数据成员值
 D、静态数据成员不能通过类的对象访问
 参考资料【 】
 54、【单选题】静态成员遵循类的其他成员所遵循的访问限制,除了( )。
 A、静态成员函数
 B、静态数据成员初始化
 C、私有静态数据成员
 D、公有静态成员函数
 参考资料【 】
 55、【单选题】对静态成员的不正确描述是( )。
 A、静态成员不属于对象,是类的共享成员
 B、静态数据成员要在类外定义和初始化
 C、调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
 D、非静态成员函数也可以操作静态数据成员
 参考资料【 】
 56、【单选题】( )只能访问静态成员变量,不能访问非静态成员变量。
 A、静态函数
 B、虚函数
 C、构造函数
 D、析构函数
 参考资料【 】
 57、【单选题】关于this指针的说法错误的是( )。
 A、this指针必须显示说明
 B、当创建一个对象后,this指针就指向该对象
 C、成员函数拥有this指针
 D、静态成员函数不拥有this指针
 参考资料【 】
 58、【单选题】关于对象成员的构造函数的调用顺序,说法正确的是( )。
 A、与它们在成员初始化列表中给出的顺序相同
 B、与析构函数的调用顺序相同
 C、与它们在类中说明顺序相同
 D、其它说法都不对
 参考资料【 】
 59、【单选题】this指针是C++实现( )的一种机制。
 A、抽象
 B、封装
 C、继承
 D、重载
 参考资料【 】
 60、【单选题】下面选项中,不是类的成员函数为( )。
 A、构造函数
 B、析构函数
 C、友元函数
 D、缺省参数的构造函数
 参考资料【 】
 61、【单选题】下面对友元的错误描述是( )。
 A、关键字friend用于声明友元
 B、一个类的成员函数可以是另一个类的友元
 C、元函数访问对象的成员不受访问特性影响
 D、友元函数通过this指针访问对象成员
 参考资料【 】
 62、【单选题】类A是类B的友元,类B是类C的友元,则( )是正确的。
 A、类B是类A的友元
 B、类C是类A的友元
 C、类A是类C的友元
 D、其它都不对
 参考资料【 】
 63、【单选题】一个类的友元函数能够访问该类的( )。
 A、私有成员
 B、保护成员
 C、公有成员
 D、所有成员
 参考资料【 】
 64、【单选题】下面关于友元的描述中,错误的是( )。
 A、友元函数可以访问该类的私有数据成员
 B、一个类的友元类中的成员函数都是这个类的友元函数
 C、友元可以提高程序的运行效率
 D、类与类之间的友元关系可以继承
 参考资料【 】
 65、【单选题】友元关系不能( )。
 A、继承
 B、是类与类之间是关系
 C、是一个类的成员函数与另一个类的关系
 D、提高程序的运行效率
 参考资料【 】
 66、【单选题】友元访问类对象的成员时使用( )。
 A、类的成员名
 B、“this->成员名”的形式
 C、“类名::成员名”的形式
 D、“对象名.成员名”的形式
 参考资料【 】
 67、【单选题】下列关于对象数组的描述中,错误的是( )。
 A、对象数组的下标是从0开始的
 B、对象数组的数组名是一个常量指针
 C、对象数组的每个元素是同一个类的对象
 D、对象数组只能赋初值,而不能在定义后赋值
 参考资料【 】
 68、【单选题】下列关于运算符重载的描述中,()是正确的。
 A、运算符重载可以改变操作数的个数
 B、运算符重载可以改变优先级
 C、运算符重载可以改变结合性
 D、运算符重载不可以改变语法结构
 参考资料【 】
 69、【单选题】下列运算符中,()运算符在C++中不能重载。
 A、?:
 B、+
 C、-
 D、=
 参考资料【 】
 70、【单选题】友元运算符obj1obj2被C++编译器解释为()。
 A、operator>(obj1,obj2)
 B、>(obj1,obj2)
 C、obj2.operator>(obj1)
 D、obj1.operator(obj2)
 参考资料【 】
 71、【单选题】在C++中,类与类之间的继承关系具有( )。
 A、自反性
 B、对称性
 C、传递性
 D、反对称性
 参考资料【 】
 72、【单选题】建造新的派生类是( )的实质。
 A、派生
 B、抽象
 C、继承
 D、封装
 参考资料【 】
 73、【单选题】对基类和派生类的描述中错误的是( )。
 A、派生类是基类的具体化
 B、基类继承了派生类的属性
 C、派生类是基类定义的延续
 D、派生类是基类的特殊化
 参考资料【 】
 74、【单选题】基类和派生类可以分别叫做( )。
 A、“大类”和“小类”
 B、“父类”和“子类”
 C、“小类”和“大类”
 D、“子类”和“父类”
 参考资料【 】
 75、【单选题】继承具有(),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
 A、规律性
 B、传递性
 C、重复性
 D、多样性
 参考资料【 】
 76、【单选题】在C++中,能被派生类继承的函数是( )。
 A、成员函数
 B、构造函数
 C、析构函数
 D、拷贝构造函数
 参考资料【 】
 77、【单选题】在创建派生类对象时,构造函数的执行顺序是( )。
 A、对象成员构造函数、基类构造函数、派生类本身的构造函数
 B、派生类本身的构造函数、基类构造函数、对象成员构造函数
 C、基类构造函数、派生类本身的构造函数、对象成员构造函数
 D、基类构造函数、对象成员构造函数、派生类本身的构造函数
 参考资料【 】
 78、【单选题】派生类的构造函数的成员初始化列表中,不能包含()。
 A、基类的构造函数
 B、派生类中子对象的初始化
 C、基类的子对象初始化
 D、派生类中一般数据成员的初始化
 参考资料【 】
 79、【单选题】下列关于类的继承描述中,( )是错误的。
 A、派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
 B、派生类也是基类,但基类不一定具有派生类的全部属性和方法
 C、继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
 D、一个基类可以有多个派生类,一个派生类可以有多个基类
 参考资料【 】
 80、【单选题】当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、友元
 参考资料【 】
 81、【单选题】当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、友元
 参考资料【 】
 82、【单选题】不论派生类以何种方法继承基类,都不能使用基类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、private成员和protected成员
 参考资料【 】
 83、【单选题】下面描述中,错误的是( )。
 A、在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
 B、在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
 C、在基类定义的public和protected成员在保护继承的派生类中可见
 D、在派生类中不可见的成员要变成可访问的,需要进行访问声明
 参考资料【 】
 84、【单选题】可以用p.a的形式访问派生类对象p的基类成员a其中a是( )。
 A、私有继承的公有成员
 B、公有继承的私有成员
 C、公有继承的保护成员
 D、公有继承的公有成员
 参考资料【 】
 85、【单选题】下面程序段中,说法正确的是( )class location{ public : int GetX(); };
 class rectangle:private location { public: int GetW(); };
 A、类rectangle的私有派生类是location
 B、类rectangle中的public成员在类 location中是私有的
 C、类location中的public成员在类 rectangle中是不可访问的
 D、viod f( ) { Rectangle r; int X=r .GetX( ); } 其中int X = r .GetX( );是非法语句
 参考资料【 】
 86、【单选题】若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( )。
 A、私有成员
 B、公有成员
 C、保护成员
 D、保护成员或私有成员
 参考资料【 】
 87、【单选题】对于公有派生,它的“继承方式“是( )。
 A、private
 B、public
 C、protected
 D、inaccessible
 参考资料【 】
 88、【单选题】下面叙述错误的是( )。
 A、派生类可以使用private派生
 B、对基类成员的访问必须是无二义性的
 C、基类成员的访问能力在派生类中维持不变
 D、赋值兼容规则也适用于多继承的组合
 参考资料【 】
 89、【单选题】下面叙述不正确的是( )。
 A、基类的保护成员在派生类中仍然是保护的
 B、基类的保护成员在公有派生类中仍然是保护的
 C、基类的保护成员在私有派生类中是私有的
 D、对基类成员的访问必须是无二义性
 参考资料【 】
 90、【单选题】下列说法中错误的是( )。
 A、公有继承时基类中的public成员在派生类中是public的
 B、公有继承时基类中的private成员在派生类中是不可访问的
 C、私有继承时基类中的public成员在派生类中是private的
 D、私有继承时基类中的public成员在派生类中是protected的
 参考资料【 】
 91、【单选题】派生类的对象对它的基类成员中()是可以访问的。
 A、公有继承的公有成员
 B、公有继承的私有成员
 C、公有继承的保护成员
 D、私有继承的公有成员
 参考资料【 】
 92、【单选题】下列对派生类的描述中,()是错误的。
 A、一个派生类可以作另一个派生类的基类
 B、派生类至少有一个基类
 C、派生类的成员除了它自己的成员外,包含了它的基类的成员
 D、派生类中继承的基类成员的访问权限到派生类保持不变
 参考资料【 】
 93、【单选题】若类A和类B的定义如下: class A {
 int i,j;
 public:
 void get();
 };
 class B:A//默认为私有派生 {
 int k;
 public:
 void make();
 };
 void B:: make() { k=ij; } 则上述定义中,()是非法的表达式。
 A、void get();
 B、int k;
 C、void make();
 D、k=ij;
 参考资料【 】
 94、【单选题】对于多重继承,有( )。
 A、一个派生类只能有一个基类
 B、一个基类只能产生一个派生类
 C、一个基类必须产生多个派生类
 D、一个派生类可有多个基类
 参考资料【 】
 95、【单选题】在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。
 A、完全相同
 B、完全不同
 C、部分相同,部分不同
 D、其它都不对
 参考资料【 】
 96、【单选题】关于多继承二义性的描述中,错误的是()。
 A、一个派生类的基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性
 B、解决二义性的最常用的方法是对成员名的限定法
 C、基类和派生类同时出现的同名函数,也存在二义性问题
 D、一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类, 对该基类成员进行访问时,可能出现二义性
 参考资料【 】
 97、【单选题】下列程序段中具有相同值的是( ) class Base {int b;};
 class Base1:virtual public base{int b1;};
 class Base2:virtual public base{int b2;};
 class derived:public Base1,public Base2{int b3;};
 derived d;
 A、d.b与d.base1::b
 B、d.base1::b与 d.base1::b1
 C、d.b与 d. b3
 D、d.base2::b与 d.base2::b2
 参考资料【 】
 98、【单选题】下列虚基类的声明中正确的是( )。
 A、class virtual B:public A
 B、virtual class B:public
 C、class B:public A virtual
 D、class B: virtual public A
 参考资料【 】
 99、【单选题】设置虚基类的目的是()。
 A、简化程序
 B、消除二义性
 C、提高运行效率
 D、减少目标代码
 参考资料【 】
 100、【单选题】在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()。
 A、派生类的对象可以赋给基类对象
 B、派生类的对象可以初始化基类的引用
 C、派生类的对象可以直接访问基类的成员
 D、派生类的对象的地址可以赋给指向基类的指针
 参考资料【 】
 101、【单选题】下面( )的叙述不符合赋值兼容规则。
 A、派生类的对象可以赋值给基类的对象
 B、基类的对象可以赋值给派生类的对象
 C、派生类的对象可以初始化基类的对象
 D、派生类的对象的地址可以赋值给指向基类的指针
 参考资料【 】
 102、【单选题】动态联编所支持的多态性是( )。
 A、虚函数
 B、继承
 C、编译时的多态性
 D、运行时的多态性
 参考资料【 】
 103、【单选题】不同的对象可以调用相同名称的函数,并可导致完全不同的行为的现象称为( )。
 A、多态性
 B、抽象
 C、继承
 D、封装
 参考资料【 】
 104、【单选题】C++有( )种联编方式。
 A、1
 B、2
 C、3
 D、4
 参考资料【 】
 105、【单选题】下列函数中,可以作为虚函数的是( )。
 A、普通函数
 B、构造函数
 C、静态成员函数
 D、析构函数
 参考资料【 】
 106、【单选题】在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( )。
 A、不同
 B、相同
 C、相容
 D、部分相同
 参考资料【 】
 107、【单选题】对于类定义 class A{ public: virtual void funcl(){} void func2(){} };
 class B:public A{ public: void func1(){coutclass B func1endl;}
 virtual void func2(){coutclass B func2endl;} }下面正确的叙述是( )。
 A、A::func2()和B::func1()都是虚函数
 B、A::func2()和B::func1()都不是虚函数
 C、B::func1()是虚函数,A::func2()不是虚函数
 D、B::func1()不是虚函数,A::func2()是虚函数
 参考资料【 】
 108、【单选题】类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p-A::func()将( )。
 A、调用类A中是函数func()
 B、调用类B中是函数func()
 C、根据P所指的对象类型而确定调用A中或类B中的函数func()
 D、既调用类A中函数,也调用类B中的函数
 参考资料【 】
 109、【单选题】若派生类中没有对基类的虚函数进行重定义,则它继承基类中的( )。
 A、访问权限
 B、保护成员
 C、虚函数
 D、成员函数
 参考资料【 】
 110、【单选题】关于虚函数,下列表述正确的是( )。
 A、如果在重定义虚函数时使用virtual,则该重定义函数仍然是虚函数
 B、虚函数不得声明为静态函数
 C、虚函数不得声明为另一个类的友元函数
 D、派生类必须重新定义基类的虚函数
 参考资料【 】
 111、【单选题】用于类中虚成员函数说明的关键字( )。
 A、virtual
 B、public
 C、protected
 D、private
 参考资料【 】
 112、【单选题】多态调用是指( )。
 A、以任何方式调用一个虚函数
 B、以任何方式调用一个纯虚函数
 C、借助于指向对象的基类指针或引用调用一个虚函数
 D、借助于指向对象的基类指针或引用调用一个纯虚函数
 参考资料【 】
 113、【单选题】在C++中,要实现动态联编,可以使用( )调用虚函数。
 A、类名
 B、派生类指针
 C、对象名
 D、基类指针
 参考资料【 】
 114、【单选题】关于动态关联的下列叙述中,()是错误的。
 A、动态关联是以虚函数为基础的
 B、动态关联调用虚函数操作是指向对象的指针或引用
 C、动态关联是在运行时确定所调用的函数代码的
 D、动态关联是在编译时确定操作函数的
 参考资料【 】
 115、【单选题】关于函数的描述中,()是正确的。
 A、派生类的虚函数与基类的虚函数具有不同的参数个数和类型
 B、基类中说明了虚函数后,派生类中其对应的函数一定要说明为虚函数
 C、虚函数是一个成员函数
 D、虚函数是一个static类型的成员函数
 参考资料【 】
 116、【单选题】实现运行时的多态性要使用()。
 A、构造函数
 B、析构函数
 C、重载函数
 D、虚函数
 参考资料【 】
 117、【单选题】对虚函数的调用()。
 A、一定使用动态
 B、一定使用静态联编
 C、必须使用动态联编
 D、不一定使用动态联编
 参考资料【 】
 118、【单选题】若析构函数是虚函数,则delete对析构函数的调用采用( )。
 A、静态联编
 B、动态联编
 C、重载函数
 D、多重函数
 参考资料【 】
 119、【单选题】下面函数原型声明中,( )声明了fun为纯虚函数。
 A、void fun()=0;
 B、virtual void fun()=0;
 C、virtual void fun();
 D、virtual void fun(){};
 参考资料【 】
 120、【单选题】若一个类中含有纯虚函数,则该类称为( )。
 A、基类
 B、纯基类
 C、派生类
 D、抽象类
 参考资料【 】
 121、【单选题】假设A为抽象类,下列语句( )是正确的。
 A、A fun(int);
 B、A *p;
 C、int fun(A);
 D、A Obj;
 参考资料【 】
 122、【单选题】下面描述中,错误的是( )。
 A、虚函数是没有实现的函数
 B、纯虚函数的实现在派生类中
 C、抽象类是有纯虚函数的类
 D、抽象类指针可以指向不同的派生类
 参考资料【 】
 123、【单选题】关于抽象类, 下列表述正确的是( )。
 A、抽象类的成员函数中至少有一个没有实现的函数(即无函数体定义的函数)
 B、派生类必须实现作为基类的抽象类中的纯虚函数
 C、派生类不可能成为抽象类
 D、抽象类不能用于定义对象
 参考资料【 】
 124、【单选题】关于纯虚函数,下列表述正确的是( )。
 A、纯虚函数是未给出实现版本(即无函数体定义)的虚函数
 B、纯虚函数的声明总是以“=0”结束
 C、派生类必须实现基类的纯虚函数
 D、含有纯虚函数的类一定是派生类
 参考资料【 】
 125、【单选题】下面哪个基类中的成员函数表示纯虚函数( )。
 A、virtual void vf(int)
 B、void vf(int)=0
 C、virtual void vf()=0
 D、virtual void vf(int)
 参考资料【 】
 126、【单选题】如果一个类至少有一个纯虚函数,那么就称该类为()。
 A、抽象类
 B、派生类
 C、纯基类
 D、其它都不对
 参考资料【 】
 127、【单选题】()是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的可访问性的规定是相同的。
 A、纯虚函数
 B、虚析构函数
 C、虚构造函数
 D、静态成员函数
 参考资料【 】
 128、【单选题】下列描述中,()是抽象类的特性。
 A、可以说明虚函数
 B、可以定义友元函数
 C、可以进行构造函数重载
 D、不能说明其对象
 参考资料【 】
 129、【单选题】下列类中( )是输入/输出流类iostream的派生类。
 A、fstream
 B、ofstream
 C、ifstream
 D、ostream
 参考资料【 】
 130、【单选题】包含类fstream定义的头文件是( )。
 A、fstream
 B、ofstream
 C、ifstream
 D、iostream
 参考资料【 】
 131、【单选题】进行文件操作时需要包含()头文件。
 A、iostream
 B、fstream
 C、stdio
 D、stdlib
 参考资料【 】
 132、【单选题】在下列选项中( )不是ostream类的对象。
 A、cin
 B、cerr
 C、clog
 D、cout
 参考资料【 】
 133、【单选题】要求打开文件 d:\file.dat,可写入数据,正确的语句是( )。
 A、ifstream infile("d:\file.dat", ios::in);
 B、ifstream infile("d:\file.dat", ios::in);
 C、ofstream infile("d:\file.dat", ios::out);
 D、fstream infile("d:\file.dat", ios::in| ios::out);
 参考资料【 】
 134、【单选题】当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。
 A、ios::in
 B、ios::out
 C、ios::trunk
 D、ios::binary
 参考资料【 】
 135、【单选题】在C++中,打开一个文件就是将这个文件与一个()建立关联;关闭一个文件就是取消这种关联。
 A、流
 B、类
 C、结构
 D、对象
 参考资料【 】
 136、【单选题】若定义cinstr;当输入 Microsoft Visual Studio 6.0! 所得的结果是str= ()。
 A、Microsoft Visual Studio 6.0!
 B、Microsoft
 C、Microsoft Visual
 D、Microsoft Visual Studio 6.0
 参考资料【 】
 137、【单选题】假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( )。
 A、outfile.write((float *) &data, sizeof(float));
 B、outfile.write((float *) &data, data);
 C、outfile.write((char *) &data, sizeof(float));
 D、outfile.write((char ) &data, data);
 参考资料【 】
 138、【单选题】read函数的功能是从输入流中读取( )。
 A、一个字符
 B、当前字符
 C、一行字符
 D、指定若干个字符
 参考资料【 】
 139、【单选题】关于函数模板,描述错误的是( )。
 A、函数模板必须由程序员实例化为可执行的函数模板
 B、函数模板的实例化由编译器实现
 C、一个类定义中,只要有一个函数模板,则这个类是类模板
 D、类模板的成员函数都是函数模板
 参考资料【 】
 140、【单选题】下列的模板说明中,正确的是( )。
 A、template <typename T1, T2>
 B、template <class T1, T2>
 C、template <class T1, class T2>
 D、template <typename T1; typename T2>
 参考资料【 】
 141、【单选题】假设有函数模板定义如下:Template typename T
 Max(T a, T b, T c)
 { c=a+b; }下列选项正确的是( )。
 A、float x,y,z; Max(x,y,z);
 B、const int x,y,z; Max(x,y,z);
 C、int x,y; float z; Max(x,y,z);
 D、float x; int y, z; Max(x,y,z);
 参考资料【 】
 142、【单选题】下面对模板的声明,正确的是( )。
 A、A.template<T>
 B、template<class T1,T2>
 C、template<class T1,class T2>
 D、template<classT1;classT2>
 参考资料【 】
 143、【单选题】类模板的模板参数( )。
 A、只可作为数据成员的类型
 B、只可作为成员函数的返回类型
 C、只可作为成员函数的参数类型
 D、其它三者皆可
 参考资料【 】
 144、【单选题】一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
 A、函数模板
 B、模板函数
 C、类模板
 D、模板类
 参考资料【 】
 145、【单选题】关于类模板,描述错误的是( )。
 A、一个普通基类不能派生类模板
 B、类模板从普通类派生,也可以从类模板派生
 C、根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
 D、函数的类模板参数须通过构造函数实例化
 参考资料【 】
 146、【单选题】建立类模板对象的实例化过程为( )。
 A、基类->派生类
 B、构造函数->对象
 C、模板类->对象
 D、模板类->模板函数
 参考资料【 】
 147、【单选题】类模板的使用实际上是类模板实例化成一个具体的( )。
 A、类
 B、对象
 C、函数
 D、变量
 参考资料【 】
 148、【单选题】类模板的静态数据成员由( )共享。
 A、一个类模板的所有模板类
 B、一个模板类的所有对象
 C、一个模板类的一个对象
 D、一个类模板的所有对象
 参考资料【 】
 149、【单选题】下列说法正确的是( )。
 A、C++字符集中包括汉字
 B、C++中myname和Myname表示同一个标识符
 C、_name是一个合法的C++标识符
 D、1name是一个合法的C++标识符
 参考资料【 】
 150、【多选题】下列说法正确的是( )。
 A、包含源代码的程序文件称为源文件
 B、包含源代码的程序文件称为可执行文件
 C、编译后生成的文件是可执行程序
 D、连接后生成的文件是可执行程序
 参考资料【 】
 151、【多选题】下列说法正确的是( )。
 A、面向对象程序设计方法也成为面向过程的程序设计方法
 B、面向对象程序设计方法的设计思想是“自顶向下、逐步求精”
 C、面向对象程序设计方法最重要的两个概念是类和对象
 D、面向对象方法中,类是具有相同类型的对象的抽象
 参考资料【 】
 152、【多选题】下列说法正确的是( )。
 A、计算机所完成的每一个基本动作称为一条指令
 B、机器语言是计算机可以读懂的语言
 C、高级语言编写的程序必须通过特定翻译程序翻译成机器语言后才能被计算机读懂
 D、汇编语言和C++语言都是高级程序设计语言
 参考资料【 】
 153、【多选题】下列说法正确的是( )。
 A、C++和C是完全不同的两种语言
 B、C++是C语言的超集,即C语言代码不经修改就可以经C++编译器编译
 C、C语言是面向过程的程序设计语言
 D、C++是面向对象的程序设计语言
 参考资料【 】
 154、【多选题】下列VS2010集成开发环境的说法中,正确的是( )。
 A、一个解决方案中仅能包含一个项目
 B、一个解决方案中可以包含多个项目
 C、一个项目中可以包含多个C++
 D、一个项目中仅能包含一个C++源文件
 参考资料【 】
 155、【多选题】下列说法正确的是( )。
 A、使用cin和cout进行标准输入输出时必须包含头文件iostream
 B、在编写一个控制台应用程序时,程序中有且只能有一个main函数
 C、在一个控制台应用程序中,可以有多个main函数
 D、一条C++语句中可以定义多个不同类型的变量
 参考资料【 】
 156、【多选题】已知:const double PI=3.14;则以下语句中正确的是( )。
 A、double a=2PI;
 B、PI=3.14159;
 C、cin>>PI;
 D、cout<<PI;
 参考资料【 】
 157、【多选题】下列说法正确的是( )。
 A、定义内联函数需要在函数声明处加上inline关键字
 B、定义内联函数需要在函数定义处加上inline关键字
 C、内联函数是为了避免函数调用所引起的额外时间开销
 D、内联函数中不能包括循环、switch等复杂结构控制语句
 参考资料【 】
 158、【多选题】已知函数声明void f(int a, int b=10, int c=20, int d=30);,则下列函数调用中正确的是( )。
 A、f(3)
 B、f(3,5)
 C、f(3,4,5,6)
 D、f()
 参考资料【 】
 159、【多选题】已知函数调用f(3,4,5)是正确的函数调用,则下列选项中函数f可能的声明形式包括( )。
 A、void f(int a, int b, int c);
 B、void f(int a, int b, int c=10);
 C、void f(int a=20, int b, int c=10);
 D、void f(int a, int b, int c=10, int d=20);
 参考资料【 】
 160、【多选题】下列选项中,正确的函数重载包括( )。
 A、void f(int a)和int f(int a)
 B、void f(int a, int b)和void f(int a)
 C、void f(int a, int b=5)和void f(int a)
 D、void f(int a)和void f(double a)
 参考资料【 】
 161、【多选题】下列语句中正确的是( )。
 A、int *p=new int(3);
 B、int *p=new int[3];
 C、int *p=new int3
 D、int *p=new int[];
 参考资料【 】
 162、【多选题】已经int *p;,则下列语句中能够输出3的语句包括( )。
 A、p=new int(3);cout<<*p;
 B、p=new int[3];cout<<*p;
 C、p=new int[3]; p[0]=3; cout<<*p;
 D、*p=3; cout<<*p;
 参考资料【 】
 163、【多选题】已知int p1=new int(3); int p2=new int[3];,则下列语句中,能够正确释放p1和p2所指内存空间的选项包括( )。
 A、delete []p1; delete []p2;
 B、delete []p1; delete p2;
 C、delete p1; delete []p2;
 D、delete p1; delete p2;
 参考资料【 】
 164、【多选题】已知int a=10; int r=a;,则下列语句中,能够将变量a的值设置为3的语句包括( )。
 A、r-=7;
 B、a-=7;
 C、&r=3;
 D、a=3
 参考资料【 】
 165、【多选题】下列说法正确的是( )。
 A、若语句f(3)=5;正确,则f一定是一个返回引用的函数
 B、若语句cout<<f(3);正确,则f一定是一个返回引用的函数
 C、在返回引用的函数中,可以返回全局变量或静态变量的引用
 D、在返回引用的函数中,可以返回局部变量的引用
 参考资料【 】
 166、【多选题】已知函数:void f(int a, int b)
 {a+=2; b+=2;}变量int x=3, y=5;,则以下说法正确的是( )。
 A、执行f(x,y)后,x的值是5
 B、执行f(x,y)后,x的值是3
 C、执行f(x,y)后,y的值是7
 D、执行f(x,y)后,y的值是5
 参考资料【 】
 167、【多选题】下列说法正确的是( )。
 A、面向对象方法的基本观点是一切系统都是由对象构成的
 B、面向对象方法的基本观点是一切系统都是由模块构成的
 C、面向对象方法中通过“消息”来触发行为
 D、面向对象方法中用类和对象来表示现实世界
 参考资料【 】
 168、【多选题】关于类和对象不正确的说法包括( )。
 A、类是一种类型,它封装了数据和操作
 B、对象是类的实例
 C、一个类的对象只有一个
 D、一个对象可以属于多个类
 参考资料【 】
 169、【多选题】关于类和对象正确的说法包括( )。
 A、类是一种类型,它封装了数据和操作
 B、对象是类的实例
 C、一个类的对象只有一个
 D、一个对象必属于某个类
 参考资料【 】
 170、【多选题】对象的核心概念就是通常所说的()。
 A、继承
 B、封装
 C、传递
 D、多态
 参考资料【 】
 171、【多选题】下列说法正确的是( )。
 A、数据成员用来描述对象的状态
 B、成员函数用来描述对象的行为
 C、定义类需要使用class关键字
 D、类中的所有成员必须采有相同的访问控制方式
 参考资料【 】
 172、【多选题】已知Circle类定义如下所示,则下列说法正确的是( )。class Circle
 {
 public:
 double m_x,m_y;
 double m_radius;
 void setCenter(double x,double y)
 {
 m_x=x;
 m_y=y;
 }
 void setRadius(double radius)
 {
 m_radius=radius;
 }
 double getArea( )
 {
 return 3.14 * m_radius * m_radius;
 }
 };
 A、m_x、m_y和m_radius都是Circle类的成员变量
 B、setCenter、setRadius和getArea都是Circle类的成员函数
 C、类定义体后面的分号可以省略
 D、将double m_radius;改为double m_radius=1;,则表示m_radius成员变量的初值为1
 参考资料【 】
 173、【多选题】下面对构造函数的正确描述是( )。
 A、系统可以提供默认的构造函数
 B、构造函数可以有参数,所以可以有返回值
 C、构造函数可以重载
 D、构造函数可以设置默认参数
 参考资料【 】
 174、【多选题】下面对构造函数的错误描述是( )。
 A、系统可以提供默认的构造函数
 B、构造函数可以有参数,所以可以有返回值
 C、构造函数不可以重载
 D、构造函数可以设置默认参数
 参考资料【 】
 175、【多选题】下列( )是构造函数的特征。
 A、构造函数在创建对象时自动调用
 B、构造函数不可以重载
 C、构造函数不可以设置默认参数
 D、构造函数没有函数类型
 参考资料【 】
 176、【多选题】下列( )不是构造函数的特征。
 A、构造函数在创建对象时自动调用
 B、构造函数可以重载
 C、构造函数不可以设置默认参数
 D、构造函数必须指定函数类型
 参考资料【 】
 177、【多选题】已知Cirle是一个类,其中有一个成员函数public:void setRadius(int r),且有如下变量定义语句Circle c, pC=c;则下列语句正确的是( )。
 A、c::setRadius(3)
 B、pC->setRadius(3)
 C、pC.setRadius(3)
 D、c.setRadius(3)
 参考资料【 】
 178、【多选题】类成员的访问控制方式包括( )。
 A、public
 B、private
 C、protected
 D、friend
 参考资料【 】
 179、【多选题】不能使用类对象直接访问的成员包括( )。
 A、公有成员
 B、保护成员
 C、私有成员函数
 D、私有成员变量
 参考资料【 】
 180、【多选题】类的成员函数中可以直接访问本类的( )。
 A、公有成员
 B、保护成员
 C、私有成员函数
 D、私有成员变量
 参考资料【 】
 181、【多选题】下面对析构函数的正确描述是( )。
 A、系统可以提供默认的析构函数
 B、析构函数必须由用户定义
 C、析构函数没有参数
 D、析构函数可以设置默认参数
 参考资料【 】
 182、【多选题】下面对析构函数的错误描述是( )。
 A、系统不能提供默认的析构函数
 B、析构函数必须由用户定义
 C、析构函数没有参数
 D、析构函数可以设置默认参数
 参考资料【 】
 183、【多选题】下面属于析构函数特征的是( )。
 A、析构函数可以重载
 B、对象销毁前会自动调用析构函数
 C、如果定义一个类时没有定义析构函数,则系统会提供一个默认析构函数~<类名>(){}
 D、析构函数的函数类型为void
 参考资料【 】
 184、【多选题】下列关于拷贝构造函数的说法中,正确的是( )。
 A、拷贝构造函数是一个特殊的构造函数
 B、一个类中只能有一个拷贝构造函数
 C、如果定义一个类时没有定义拷贝构造函数,则系统会提供一个默认的不包含任何操作的拷贝构造函数
 D、当一个类中有指针类型的成员变量时,则需要为这个类定义拷贝构造函数
 参考资料【 】
 185、【多选题】下列关于拷贝构造函数的说法中,错误的是( )。
 A、拷贝构造函数是可以重载
 B、用一个对象给另一个对象赋值时,拷贝构造函数会被自动调用
 C、用一个对象初始化另一个对象时,拷贝构造函数会被自动调用
 D、创建一个对象时,有可能同时调用拷贝构造函数和其他构造函数
 参考资料【 】
 186、【多选题】系统提供的默认拷贝构造函数实现的是“浅拷贝”,下列关于浅拷贝的说法中正确的是( )。
 A、当一个类中有指针成员变量时,浅拷贝有可能会导致一片内存被重复释放
 B、当一个类中有指针成员变量时,浅拷贝有可能导致一个对象中保存的数据不正确
 C、如果一个类中只有int型和double型的成员变量,则浅拷贝不会出现任何问题
 D、如果一个类中有一个成员变量是char型数组,则使用浅拷贝会存在问题
 参考资料【 】
 187、【多选题】下列说法中正确的是( )。
 A、成员函数的声明必须放在类体中
 B、成员函数的声明可以放在类体中也可以放在类体外
 C、成员函数的实现必须放在类体中
 D、成员函数的实现可以放在类体中也可以放在类体外
 参考资料【 】
 188、【多选题】下列关于类的常量数据成员的说法中,正确的是( )。
 A、一个类的常量数据成员必须在类体中初始化
 B、一个类的常量数据成员由该类的所有对象共享
 C、一个类的常量数据成员对于该类的不同对象可以取不同的值
 D、使用const关键字可以将一个数据成员声明为常量数据成员
 参考资料【 】
 189、【多选题】下列关于类的常量数据成员的说法中,正确的是( )。
 A、常量数据成员只能是公有成员
 B、可以在构造函数的初始化列表中为常量数据成员赋初值
 C、可以在构造函数的函数体中为常量数据成员赋初值
 D、常量数据成员的值初始化后就只能访问、无法修改
 参考资料【 】
 190、【多选题】下列关于类的常量成员函数的说法中,正确的是( )。
 A、只有类的成员函数可以在函数头后面加const关键字
 B、在常量成员函数中可以获取成员变量的值、但不能修改
 C、在常量成员函数中只能访问常量数据成员
 D、在类体外定义常量成员函数时,函数头后面的const关键字可以省略
 参考资料【 】
 191、【多选题】下列关于类的静态数据成员的说法中,正确的是( )。
 A、静态数据成员的值初始化后不能再修改
 B、静态数据成员必须在类体外定义和初始化
 C、使用static关键字可以将一个数据成员声明为静态数据成员
 D、静态数据成员的访问控制权限可以是公有、私有或保护
 参考资料【 】
 192、【多选题】已知类Circle中有一个静态数据成员s_nNum,且有变量定义语句Circle c, pc;,则下列选项中,能给s_nNum赋值为3的语句包括( )。
 A、Circle.s_nNum=3
 B、Circle:😒_nNum=3
 C、c.s_nNum=3
 D、pc->s_nNum=3
 参考资料【 】
 193、【多选题】对静态成员的正确描述是( )。
 A、静态成员不属于对象,是类的共享成员
 B、静态数据成员要在类外定义和初始化
 C、调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
 D、非静态成员函数也可以操作静态数据成员
 参考资料【 】
 194、【多选题】对静态成员的错误描述是( )。
 A、静态成员不属于对象,是类的共享成员
 B、静态数据成员要在类外定义和初始化
 C、调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
 D、静态成员函数可以操作非静态数据成员
 参考资料【 】
 195、【多选题】关于this指针的说法错误的是( )。
 A、this指针必须显示说明
 B、静态成员函数拥有this指针
 C、成员函数拥有this指针
 D、静态成员函数不拥有this指针
 参考资料【 】
 196、【多选题】关于this指针的说法正确的是( )。
 A、this指针必须显示说明
 B、成员函数不拥有this指针
 C、成员函数拥有this指针
 D、静态成员函数不拥有this指针
 参考资料【 】
 197、【多选题】下面选项中,是类的成员函数为( )。
 A、构造函数
 B、析构函数
 C、友元函数
 D、缺省参数的构造函数
 参考资料【 】
 198、【多选题】下面对友元的错误描述是( )。
 A、关键字virtual用于声明友元
 B、一个类的成员函数可以是另一个类的友元
 C、友元函数访问对象的成员不受访问特性影响
 D、友元函数通过this指针访问对象成员
 参考资料【 】
 199、【多选题】下面对友元的正确描述是( )。
 A、关键字friend用于声明友元
 B、一个类的成员函数可以是另一个类的友元
 C、友元函数访问对象的成员不受访问特性影响
 D、友元函数通过this指针访问对象成员
 参考资料【 】
 200、【多选题】下面对对象成员的正确描述是( )。
 A、在一个类中可以声明本类的对象成员
 B、对象成员的声明方法与普通数据成员的声明方法相同
 C、在一个类中可以声明本类的指针数据成员
 D、如果对象成员的构造函数有参数,则必须在声明该对象成员的同时给其构造函数传递参数值
 参考资料【 】
 201、【多选题】下面对对象成员的正确描述是( )。
 A、可以在构造函数的初始化列表中给出对象成员的初始化
 B、可以在构造函数的函数体中给出对象成员的初始化
 C、如果一个对象成员有无参构造函数,则可以省略对象成员的初始化语句
 D、若A类中有B类对象成员,则在创建A类对象时,先执行B类的构造函数,再执行A类的构造函数
 参考资料【 】
 202、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、C++中的所有运算符都可以重载
 B、不仅可以重载C++中已有的运算符,还可以创建新的运算符
 C、运算符重载实质上就是函数重载
 D、运算符重载的函数名是operator<重载的运算符>
 参考资料【 】
 203、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、可以根据需要重新定义重载的运算符的优先级和结合性
 B、重载运算符的操作数个数不能改变
 C、运算符重载要求至少有一个运算数是自定义类型
 D、运算符重载有成员重载和友元重载两种形式
 参考资料【 】
 204、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、除了后增后减单目运算符外,其他运算符重载为类的成员函数时,函数参数个数比运算符实际操作数个数少一个
 B、运算符重载为类的成员函数时,函数中的this指针指向第一个运算数
 C、只有运算符的第一个运算数是自定义类类型时,才能将该运算符重载为类的成员函数
 D、所有运算符都可以以类成员函数形式进行重载
 参考资料【 】
 205、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、类友元形式重载的运算符,重载函数中的this指针指向第一个运算数
 B、类友元形式重载的运算符,重载函数中可以直接访问类中的私有成员
 C、类友元形式重载的运算符,重载函数的参数个数与运算符的实际操作数个数相同
 D、所有运算符都可以以类友元形式进行重载
 参考资料【 】
 206、【多选题】下面关于自定义类的运算符重载的说法中,正确的是( )。
 A、赋值运算符和下标运算符只能重载为类的成员函数
 B、赋值运算符和下标运算符只能重载为类的友元函数
 C、赋值运算符重载时一般以引用方式返回this,表示返回赋值运算符的左操作数
 D、使用重载的赋值运算符时,左操作数一定是自定义类型
 参考资料【 】
 207、【多选题】如果类A继承了类B,则类A称为()。
 A、派生类
 B、继承类
 C、子类
 D、父类
 参考资料【 】
 208、【多选题】如果类A继承了类B,则类B称为()。
 A、派生类
 B、基类
 C、子类
 D、父类
 参考资料【 】
 209、【多选题】下列关于类的继承描述中,( )是正确的。
 A、派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
 B、派生类也是基类,但基类不一定具有派生类的全部属性和方法
 C、继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
 D、一个基类可以有多个派生类,一个派生类可以有多个基类
 参考资料【 】
 210、【多选题】下列关于类的继承描述中,( )是错误的。
 A、派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
 B、派生类也是基类,但基类不一定具有派生类的全部属性和方法
 C、继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
 D、一个基类可以有多个派生类,但一个派生类只能由一个基类
 参考资料【 】
 211、【多选题】在派生类中可以直接访问基类的()。
 A、公有成员
 B、保护成员
 C、私有成员
 D、友元成员
 参考资料【 】
 212、【多选题】下列成员中,不能被派生类继承的包括()。
 A、公有成员
 B、构造函数
 C、保护成员
 D、析构函数
 参考资料【 】
 213、【多选题】在C++中,不能被派生类继承的函数是( )。
 A、成员函数
 B、构造函数
 C、析构函数
 D、拷贝构造函数
 参考资料【 】
 214、【多选题】下列描述中,正确的是( )。
 A、创建派生类对象时会先调用基类构造函数,再调用派生类构造函数
 B、创建派生类对象时会先调用派生类构造函数,再调用基类构造函数
 C、如果基类构造函数有参数,则必须在派生类构造函数的初始化列表中写上基类构造函数的调用语句
 D、如果派生类构造函数的初始化列表中没写基类构造函数的调用,则表示调用基类的无参构造函数
 参考资料【 】
 215、【多选题】下列描述中,正确的是( )。
 A、派生类构造函数主要是对派生类新定义的成员变量进行初始化
 B、派生类从基类继承的成员变量的初始化通过基类构造函数完成
 C、派生类对象被销毁时会先调用基类析构函数
 D、派生类对象被销毁时会先调用派生类析构函数
 参考资料【 】
 216、【多选题】当用public继承从基类派生一个类时,基类的()成员可被派生类中的成员函数访问。
 A、protected
 B、public
 C、private
 D、friend
 参考资料【 】
 217、【多选题】当类的继承方式为公有继承时,基类的()成员的访问属性在派生类中不变
 A、公有成员
 B、保护成员
 C、私有成员
 D、友元成员
 参考资料【 】
 218、【多选题】基类中的公有成员可能是派生类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、友元成员
 参考资料【 】
 219、【多选题】基类中的保护成员可能是派生类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、友元成员
 参考资料【 】
 220、【多选题】基类中的保护成员在派生类中仍然是保护成员,则可能采用的继承方式为( )。
 A、公有继承
 B、保护继承
 C、私有继承
 D、友元继承
 参考资料【 】
 221、【多选题】不论派生类以何种方法继承基类,都可以使用基类的( )。
 A、public成员
 B、private成员
 C、protected成员
 D、所有成员
 参考资料【 】
 222、【多选题】下面描述中,正确的是( )。
 A、在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
 B、在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
 C、在基类定义的public和protected成员在保护继承的派生类中可见
 D、在派生类中不可见的成员要变成可访问的,需要进行访问声明
 参考资料【 】
 223、【多选题】下面描述中,错误的是( )。
 A、在基类定义的public成员在保护继承的派生类中可见,也能在类外被访问
 B、在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
 C、在基类定义的public和protected成员在保护继承的派生类中可见
 D、在派生类中不可见的成员要变成可访问的,需要进行访问声明
 参考资料【 】
 224、【多选题】下面描述中,正确的是( )。
 A、多重继承中,多个基类必须采用相同的继承方式
 B、多重继承中,多个基类可以采用不同的继承方式
 C、多重继承中创建派生类对象时会先调用派生类构造函数,再调用各基类构造函数
 D、多重继承中创建派生类对象时各基类构造函数的调用顺序与基类的继承顺序一致
 参考资料【 】
 225、【多选题】下面描述中,正确的是( )。
 A、多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序相反
 B、多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序一致
 C、多重继承中创建派生类对象时各基类构造函数的调用顺序与基类构造函数在初始化列表中的出现顺序一致
 D、多重继承中,如果派生类的初始化列表中没有某个基类构造函数的调用语句,则表示调用该基类的无参构造函数
 参考资料【 】
 226、【多选题】下面描述中,正确的是( )。
 A、虚拟继承可以解决多重继承中的二义性问题
 B、类层次中的类从虚基类中直接继承虚基类的成员
 C、在有虚基类的类层次中,创建派生类对象时,会先调用基类的构造函数再调用虚基类的构造函数
 D、在有虚基类的类层次中,销毁派生类对象时析构函数的调用顺序与创建派生类对象时构造函数的调用顺序相反
 参考资料【 】
 227、【多选题】下列选项中,属于类型兼容特点的选项包括( )。
 A、可以用派生类对象给基类对象赋值
 B、可以用派生类对象地址给基类指针赋值
 C、可以用基类对象给派生类对象赋值
 D、可以用基类对象初始化派生类引用
 参考资料【 】
 228、【多选题】下列关于类型兼容的描述中,正确的是( )。
 A、将派生类对象地址赋给基类指针后,使用基类指针可以直接访问派生类中定义的公有成员
 B、将派生类对象地址赋给基类指针后,使用基类指针只能访问派生类从基类继承的公有成员
 C、公有派生才具有类型兼容的特点
 D、无论是公有派生还是私有派生和保护派生,都具有类型兼容的特点
 参考资料【 】
 229、【多选题】已知Derived是Base的公有派生类,且已定义两个对象Derived d;和Base b;,则下列语句中正确的是( )。
 A、d=b;
 B、b=d
 C、Derived d=&b;
 D、Base &b=d;
 参考资料【 】
 230、【多选题】下列描述正确的是( )。
 A、多态性是通过动态绑定实现的
 B、多态性是通过动态绑定实现的
 C、多态性是通过静态绑定实现的
 D、动态绑定是在程序执行时进行绑定
 E、
 F、静态绑定是在程序执行时进行绑定
 参考资料【 】
 231、【多选题】下列函数中,不可以作为虚函数的是()。
 A、析构函数
 B、成员函数
 C、普通函数
 D、构造函数
 参考资料【 】
 232、【多选题】下列函数中,可以作为虚函数的是()。
 A、析构函数
 B、成员函数
 C、普通函数
 D、构造函数
 参考资料【 】
 233、【多选题】在C++中,要实现动态绑定,可以使用( )调用虚函数。
 A、基类引用
 B、派生类指针
 C、基类对象
 D、基类指针
 参考资料【 】
 234、【多选题】下列函数中,可以作为虚函数的是( )。
 A、普通成员函数
 B、构造函数
 C、静态成员函数
 D、析构函数
 参考资料【 】
 235、【多选题】下列函数中,不可以作为虚函数的是( )。
 A、普通函数
 B、构造函数
 C、静态成员函数
 D、析构函数
 参考资料【 】
 236、【多选题】下列描述正确的是( )。
 A、使用基类指针释放其所指向的派生类对象时,必须将析构函数声明为虚函数
 B、为了减少错误,在定义类时最好将每个类的析构函数都声明为虚函数
 C、当类里包含一个虚函数时,应把析构函数也声明为虚函数
 D、类中包含虚函数会增加对象的尺寸
 参考资料【 】
 237、【多选题】假设A为抽象类,下列语句( )是正确的。
 A、A fun(int);
 B、A p;
 C、int fun(A&);
 D、A Obj;
 参考资料【 】
 238、【多选题】假设A为抽象类,下列语句( )是错误的。
 A、A fun(int);
 B、A p;
 C、int fun(A);
 D、A Obj;
 参考资料【 】
 239、【多选题】下面描述中,正确的是( )。
 A、虚函数是没有实现的函数
 B、纯虚函数的实现在派生类中
 C、抽象类是有纯虚函数的类
 D、抽象类指针可以指向不同的派生类
 参考资料【 】
 240、【多选题】下面描述中,错误的是( )。
 A、虚函数是没有实现的函数
 B、纯虚函数是没有实现的函数
 C、抽象类可以用于创建对象
 D、抽象类指针可以指向不同的派生类
 参考资料【 】
 241、【多选题】下面描述中,正确的是( )。
 A、可以定义ios类的对象
 B、istream对象用来实现输入操作
 C、ios是fstream的直接基类
 D、istream是ifstream的直接基类
 参考资料【 】
 242、【多选题】下面描述中,正确的是( )。
 A、使用fstream类必须包含头文件fstream
 B、ostream对象用来实现输出操作
 C、ios是iostream的直接基类
 D、iostream是通过多重继承得到的派生类
 参考资料【 】
 243、【多选题】输出流类对象包括( )。
 A、cin
 B、cerr
 C、clog
 D、cout
 参考资料【 】
 244、【多选题】下列输入输出流类对象中,带缓冲区支持的包括( )。
 A、cin
 B、cerr
 C、clog
 D、cout
 参考资料【 】
 245、【多选题】下列打开文件的语句中,能对打开文件进行写操作的选项包括( )。
 A、fstream f("file.txt");
 B、ofstream f("file.txt");
 C、ifstream f("file.txt");
 D、ifstream f("file.txt",ios::out);
 参考资料【 】
 246、【多选题】下列打开文件的语句中,能创建文件的选项包括( )。
 A、ofstream f("file.txt", ios::out);
 B、ofstream f("file.txt");
 C、fstream f("file.txt", ios::out);
 D、ifstream f("file.txt",ios::out);
 参考资料【 】
 247、【多选题】下列描述中正确的是( )。
 A、文件操作通过文件指针来操作文件中不同位置的数据
 B、文本文件的数据存储格式与内存中的数据存储格式一致
 C、二进制文件的数据存储格式与内存中的数据存储格式一致
 D、关闭文件流可以使用文件流的close()成员函数
 参考资料【 】
 248、【多选题】用于输入输出的运算符包括( )。
 A、<<
 B、++
 C、->
 D、>>
 参考资料【 】
 249、【多选题】已知f是以二进制读写方式打开的文件流对象,且有int型变量a,则下列选项中能正确进行文件读写操作的语句包括( )。
 A、f.write((char)a, sizeof(a));
 B、f.write((char)&a, sizeof(a));
 C、f.read((char)a, sizeof(a));
 D、f.read((char)&a, sizeof(a));
 参考资料【 】
 250、【多选题】已知in是ifstream对象,则下列语句正确的是( )。
 A、in.seekg(5);
 B、in.seekg(5, ios::beg);
 C、in.seekg(5, ios::end);
 D、in.seekg(-5);
 参考资料【 】
 251、【多选题】下列插入和提取运算符重载的函数原型中,正确的是( )。
 A、istream& operator>>(istream&, 自定义类型&)
 B、istream& operator<<(istream&, 自定义类型&)
 C、ostream& operator>>(ostream&, 自定义类型&)
 D、ostream& operator<<(ostream&, 自定义类型&)
 参考资料【 】
 252、【多选题】函数模板可以与()重载。
 A、函数模板
 B、普通函数
 C、类模板
 D、普通类
 参考资料【 】
 253、【多选题】关于函数模板,描述正确的是( )。
 A、函数模板必须由程序员实例化为可执行的函数模板
 B、函数模板的实例化由编译器实现
 C、一个类定义中,只要有一个函数模板,则这个类是类模板
 D、类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
 参考资料【 】
 254、【多选题】下列的模板说明的头中,错误的是( )。
 A、template <typename T1, T2>
 B、template <class T1, T2>
 C、template <class T1, class T2>
 D、template <typename T1; typename T2>
 参考资料【 】
 255、【多选题】下列的模板说明的头中,正确的是( )。
 A、template <typename T1, typename T2>
 B、template <class T1, T2>
 C、template <class T1, class T2>
 D、template <typename T1; typename T2>
 参考资料【 】
 256、【多选题】下列关于函数模板的描述中,正确的是( )。
 A、函数模板和普通函数重载时,函数调用会优先调用符合要求的普通函数
 B、函数模板和普通函数重载时,函数调用会优先调用符合要求的函数模板
 C、函数模板的主要作用是减少可执行程序文件的尺寸
 D、函数模板的主要作用是简化程序编写
 参考资料【 】
 257、【多选题】下列关于类模板的描述中,正确的是( )。
 A、类模板的模板形参表中既可以有类型形参也可以有普通形参
 B、类模板的成员函数中可以用类型形参定义局部变量
 C、类模板中可以用类型形参声明成员变量
 D、类模板只能在类体中给出成员函数的实现
 参考资料【 】
 258、【多选题】下列关于类模板的描述中,正确的是( )。
 A、类模板中可以有静态数据成员
 B、类模板的静态数据成员由所有该类模板实例化的模板类共享
 C、类模板的静态数据成员需要在类体外进行定义和初始化
 D、类模板中可以用类型形参声明静态数据成员
 参考资料【 】
 259、【多选题】下列说法中正确的是( )。
 A、一个成员函数在类体外定义,则该成员函数默认是内联函数
 B、一个成员函数在类体中定义,则该成员函数默认是内联函数
 C、在类体外定义成员函数需要使用::运算符指明该成员函数属于哪个类
 D、类体外定义的成员函数默认为公有成员函数
 参考资料【 】
 260、【判断题】遇到一个问题后,应先分析问题、设计算法,然后再编写程序。
 A、正确
 B、错误
 参考资料【 】
 261、【判断题】一个算法必须能在有限步骤内解决问题。
 A、正确
 B、错误
 参考资料【 】
 262、【判断题】程序设计过程是指编写程序的过程。
 A、正确
 B、错误
 参考资料【 】
 263、【判断题】编程是将所设计的算法转换成计算机能够运行的代码的过程。
 A、正确
 B、错误
 参考资料【 】
 264、【判断题】源程序编译后会生成可执行程序。
 A、正确
 B、错误
 参考资料【 】
 265、【判断题】面向对象程序设计方法中也会使用结构化程序设计方法。
 A、正确
 B、错误
 参考资料【 】
 266、【判断题】面向对象的英文缩写是OOP。
 A、正确
 B、错误
 参考资料【 】
 267、【判断题】调试主要是为了解决源程序编译连接时产生的错误。
 A、正确
 B、错误
 参考资料【 】
 268、【判断题】调试主要是为了解决程序运行时产生的错误。
 A、正确
 B、错误
 参考资料【 】
 269、【判断题】C++程序中使用cin和cout除了要包含头文件iostream外,还要指定使用std命名空间。
 A、正确
 B、错误
 参考资料【 】
 270、【判断题】C++中用户定义的标识符可以与系统关键字同名。
 A、正确
 B、错误
 参考资料【 】
 271、【判断题】cin后面的符号是。
 A、正确
 B、错误
 参考资料【 】
 272、【判断题】cout后面的符号是。
 A、正确
 B、错误
 参考资料【 】
 273、【判断题】C语言中printf命令在c++中改用cin。
 A、正确
 B、错误
 参考资料【 】
 274、【判断题】C语言中scanf命令在c++中改用cin。
 A、正确
 B、错误
 参考资料【 】
 275、【判断题】默认形参值应在函数定义处指定。
 A、正确
 B、错误
 参考资料【 】
 276、【判断题】函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
 A、正确
 B、错误
 参考资料【 】
 277、【判断题】重载函数可以带默认参数值,但要注意二义性。
 A、正确
 B、错误
 参考资料【 】
 278、【判断题】定义重载函数时,应保证函数类型有所不同。
 A、正确
 B、错误
 参考资料【 】
 279、【判断题】类A有如下成员函数:int A::fun(double x){return (int) x/2;}
 int A::fun(int x){return x2;}设a为类A的对象,在主函数中执行语句int s=a.fun(6.0)+a.fun(2)后的s值为7。
 A、正确
 B、错误
 参考资料【 】
 280、【判断题】类A有如下成员函数:int A::fun(double x){return (int) x/2;}
 int A::fun(int x){return x2;设a为类A的对象,在主函数中执行语句int s=a.fun(6)+a.fun(2.0)后的s值为13。
 A、正确
 B、错误
 参考资料【 】
 281、【判断题】int *p=new int[5];表示为指针变量p分配了一个int型元素空间,并将该片内存空间的值初始化为5。
 A、正确
 B、错误
 参考资料【 】
 282、【判断题】设在程序中使用如下语句申请了一个对象数组:Point *ptr=new Point[2]; 当要释放ptr指向的动态数组对象时,所使用的语句是delete ptr。
 A、正确
 B、错误
 参考资料【 】
 283、【判断题】引用是某个变量的别名。对引用的操作,实质上就是对被引用的变量的操作。
 A、正确
 B、错误
 参考资料【 】
 284、【判断题】只有返回引用的函数可以作为赋值语句的左值。
 A、正确
 B、错误
 参考资料【 】
 285、【判断题】返回引用的函数可以返回局部变量。
 A、正确
 B、错误
 参考资料【 】
 286、【判断题】在面向对象程序设计中,具有相同属性和方法的一组对象的集合称为类。
 A、正确
 B、错误
 参考资料【 】
 287、【判断题】在面向对象程序设计中,每个对象可以单独设置属性值。
 A、正确
 B、错误
 参考资料【 】
 288、【判断题】在类体中可以在声明成员变量的同时为其赋初值。
 A、正确
 B、错误
 参考资料【 】
 289、【判断题】函数的定义不可以嵌套,类的定义可以嵌套。
 A、正确
 B、错误
 参考资料【 】
 290、【判断题】一个类的构造函数中可以不包含对其子对象的初始化。
 A、正确
 B、错误
 参考资料【 】
 291、【判断题】对一个类中的数据成员的初始化,可以通过构造函数来实现。
 A、正确
 B、错误
 参考资料【 】
 292、【判断题】假定AB为一个类,则执行AB a(10);语句时,系统自动调用该类的构造函数的次数为10。
 A、正确
 B、错误
 参考资料【 】
 293、【判断题】假定AB为一个类,则执行AB a[10];语句时,系统自动调用该类的构造函数的次数为10。
 A、正确
 B、错误
 参考资料【 】
 294、【判断题】假定AB为一个类,有类AB的两个对象a1,a2;则执行语句AB *a[10]={a1,a2};时系统自动调用该类的构造函数的次数为2。
 A、正确
 B、错误
 参考资料【 】
 295、【判断题】在一个类中最多只能定义1个构造函数和1个析构函数。
 A、正确
 B、错误
 参考资料【 】
 296、【判断题】当建立一个新对象时,程序不会自动调用任何函数。
 A、正确
 B、错误
 参考资料【 】
 297、【判断题】说明或定义对象时,类名前面不需要加class关键字。
 A、正确
 B、错误
 参考资料【 】
 298、【判断题】对象成员的访问与结构变量成员的访问相同,使用运算符.或-。
 A、正确
 B、错误
 参考资料【 】
 299、【判断题】对象数组的元素可以是不同类的对象。
 A、正确
 B、错误
 参考资料【 】
 300、【判断题】使用指向对象的指针来访问类的成员,则必须使用的运算符是-。
 A、正确
 B、错误
 参考资料【 】
 301、【判断题】使用关键字class定义的类中默认的访问权限是私有(private)的。
 A、正确
 B、错误
 参考资料【 】
 302、【判断题】所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。
 A、正确
 B、错误
 参考资料【 】
 303、【判断题】类成员的三种访问控制属性是public、private和friend。
 A、正确
 B、错误
 参考资料【 】
 304、【判断题】在类内部定义的public数据可以在类外进行存取。
 A、正确
 B、错误
 参考资料【 】
 305、【判断题】在用class定义一个类时,数据成员和成员函数的默认访问权限是public。
 A、正确
 B、错误
 参考资料【 】
 306、【判断题】构造函数和析构函数都不能重载。
 A、正确
 B、错误
 参考资料【 】
 307、【判断题】析构函数是一种函数体为空的成员函数。
 A、正确
 B、错误
 参考资料【 】
 308、【判断题】在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。
 A、正确
 B、错误
 参考资料【 】
 309、【判断题】为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义构造函数。
 A、正确
 B、错误
 参考资料【 】
 310、【判断题】假定用户没有给一个名为AB的类定义析构函数,则系统自动给出的缺省析构函数定义为~AB(){ }。
 A、正确
 B、错误
 参考资料【 】
 311、【判断题】拷贝构造函数通常使用已有对象的引用来初始化创建中的对象。
 A、正确
 B、错误
 参考资料【 】
 312、【判断题】当一个函数的返回值是类对象时,则该函数执行结束后会自动调用拷贝构造函数初始化一个临时对象。
 A、正确
 B、错误
 参考资料【 】
 313、【判断题】一般将C++中的类声明和类实现分别放到两个文件中。
 A、正确
 B、错误
 参考资料【 】
 314、【判断题】在类体外定义成员函数时需要通过域运算符指定该成员函数所属的类。
 A、正确
 B、错误
 参考资料【 】
 315、【判断题】类的常量数据成员的值只能在创建对象时初始化,初始化后不得再修改。
 A、正确
 B、错误
 参考资料【 】
 316、【判断题】类的常量数据成员只能在常量成员函数中使用。
 A、正确
 B、错误
 参考资料【 】
 317、【判断题】类的常量成员函数中只能使用常量数据成员。
 A、正确
 B、错误
 参考资料【 】
 318、【判断题】在成员函数的函数类型前加上const关键字,则该成员函数就是常量成员函数。
 A、正确
 B、错误
 参考资料【 】
 319、【判断题】可以在类的构造函数中对静态数据成员进行初始化。
 A、正确
 B、错误
 参考资料【 】
 320、【判断题】类中的静态数据成员为该类的所有对象所共享,并且,在该类对象被销毁时,静态数据成员不会被同时销毁。
 A、正确
 B、错误
 参考资料【 】
 321、【判断题】假定类AB中有一个公用属性的静态数据成员static int bb;在类外不通过对象名给该成员bb赋值为10的写法为static int AB::bb=10;
 A、正确
 B、错误
 参考资料【 】
 322、【判断题】类的静态成员变量只能在静态成员函数中使用。
 A、正确
 B、错误
 参考资料【 】
 323、【判断题】类的静态成员函数中不能访问非静态成员。
 A、正确
 B、错误
 参考资料【 】
 324、【判断题】一个静态成员函数无论是公有还是私有,都可以通过类名直接访问。
 A、正确
 B、错误
 参考资料【 】
 325、【判断题】已知Circle类对象c,Circle类中有一个setCenter成员函数,如果c.setCenter(…)返回值仍然是c,则setCenter函数中的return语句应写作return this;。
 A、正确
 B、错误
 参考资料【 】
 326、【判断题】某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
 A、正确
 B、错误
 参考资料【 】
 327、【判断题】能访问一个类CMyClass中的private成员的可以是类CMyClass的成员函数、友元函数和友元类中的函数。
 A、正确
 B、错误
 参考资料【 】
 328、【判断题】C++语言允许使用友元,但是友元会破坏封装性。
 A、正确
 B、错误
 参考资料【 】
 329、【判断题】类的私有成员只能被它的成员函数和友元函数访问。
 A、正确
 B、错误
 参考资料【 】
 330、【判断题】类的成员函数中可以直接访问对象成员中的私有成员。
 A、正确
 B、错误
 参考资料【 】
 331、【判断题】多数运算符可以重载,个别运算符不能,运算符重载是通过函数定义实现的。
 A、正确
 B、错误
 参考资料【 】
 332、【判断题】重载的运算符保持原来的优先级和结合性以及操作数的个数。
 A、正确
 B、错误
 参考资料【 】
 333、【判断题】运算符重载实际上是对已有的运算符重新定义其功能。
 A、正确
 B、错误
 参考资料【 】
 334、【判断题】运算符重载可以改变运算符的优先级。
 A、正确
 B、错误
 参考资料【 】
 335、【判断题】运算符重载的形式有两种:成员函数形式和友元形式。
 A、正确
 B、错误
 参考资料【 】
 336、【判断题】运算符重载是一种特殊的函数重载,其函数名为operator重载运算符。
 A、正确
 B、错误
 参考资料【 】
 337、【判断题】类非成员函数形式的运算符重载函数通常采用友元函数,是为了在运算符重载中方便访问类中的非公有成员。
 A、正确
 B、错误
 参考资料【 】
 338、【判断题】运算符[]只能用成员运算符来重载,不能用友元运算符来重载。
 A、正确
 B、错误
 参考资料【 】
 339、【判断题】C++语言中,既允许单继承,又允许多继承。
 A、正确
 B、错误
 参考资料【 】
 340、【判断题】通过C++语言中类的继承机制,可以扩充和完善已有类以适应新的需求。
 A、正确
 B、错误
 参考资料【 】
 341、【判断题】从现存类中构建其子类可以通过C++语言中的多态机制实现。
 A、正确
 B、错误
 参考资料【 】
 342、【判断题】派生类是从基类派生出来,它不能再生成新的派生类。
 A、正确
 B、错误
 参考资料【 】
 343、【判断题】派生类中至少包含了它的所有基类的成员(除构造函数和析构函数外),在这些成员中可能有的是不可访问。
 A、正确
 B、错误
 参考资料【 】
 344、【判断题】构造函数可以被继承。
 A、正确
 B、错误
 参考资料【 】
 345、【判断题】析构函数不能被继承。
 A、正确
 B、错误
 参考资料【 】
 346、【判断题】C++基类中,不能被派生类继承的有构造函数和析构函数。
 A、正确
 B、错误
 参考资料【 】
 347、【判断题】派生类对基类继承的成员函数进行重定义后,则通过派生类对象和基类对象调用的都是重定义后的成员函数。
 A、正确
 B、错误
 参考资料【 】
 348、【判断题】派生类的继承方式中有两种:公有继承和私有继承。
 A、正确
 B、错误
 参考资料【 】
 349、【判断题】在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
 A、正确
 B、错误
 参考资料【 】
 350、【判断题】在公有继承中,基类中只有公有成员对派生类对象是可见的。
 A、正确
 B、错误
 参考资料【 】
 351、【判断题】在私有继承中,基类中只有公有成员对派生类是可见的。
 A、正确
 B、错误
 参考资料【 】
 352、【判断题】在私有继承中,基类中所有成员对派生类的对象都是不可见的。
 A、正确
 B、错误
 参考资料【 】
 353、【判断题】在保护继承中,对于派生类的访问同于公有继承,而对于派生类的对象的访问同于私有继承。
 A、正确
 B、错误
 参考资料【 】
 354、【判断题】当类的继承方式为公有继承时,基类的私有成员在派生类中不可访问。
 A、正确
 B、错误
 参考资料【 】
 355、【判断题】在保护派生中,基类权限为private的成员在派生类中权限也为private。
 A、正确
 B、错误
 参考资料【 】
 356、【判断题】多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。
 A、正确
 B、错误
 参考资料【 】
 357、【判断题】多重继承中的二义性问题是由于一个派生类从不同基类中继承了同名成员变量或相同函数原型的成员函数。
 A、正确
 B、错误
 参考资料【 】
 358、【判断题】虚基类是用来解决多继承中公共基类在派生类中产生多份基类成员的问题。
 A、正确
 B、错误
 参考资料【 】
 359、【判断题】继承性是指同样的消息被不同对象接收时可产生不同的行为。
 A、正确
 B、错误
 参考资料【 】
 360、【判断题】通过指针或引用可以调用不同对象相同名称的函数,但可导致完全不同的行为的现象称为二义性。
 A、正确
 B、错误
 参考资料【 】
 361、【判断题】虚函数是用virtual关键字说明的成员函数。
 A、正确
 B、错误
 参考资料【 】
 362、【判断题】构造函数和析构函数均不能被说明为虚函数。
 A、正确
 B、错误
 参考资料【 】
 363、【判断题】构造函数说明为纯虚函数是没有意义的。
 A、正确
 B、错误
 参考资料【 】
 364、【判断题】纯虚函数是一种特殊的成员函数,它是一种没有具体实现的虚函数。
 A、正确
 B、错误
 参考资料【 】
 365、【判断题】具有纯虚函数的类是抽象类,它的特点是不可以定义对象。
 A、正确
 B、错误
 参考资料【 】
 366、【判断题】一个抽象类的派生类可以用于创建对象。
 A、正确
 B、错误
 参考资料【 】
 367、【判断题】含有纯虚函数的类是抽象类。
 A、正确
 B、错误
 参考资料【 】
 368、【判断题】定义纯虚函数所用的关键字是purevirtual。
 A、正确
 B、错误
 参考资料【 】
 369、【判断题】C++的I/O系统通过流的机制实现文件和控制台的输入输出操作。
 A、正确
 B、错误
 参考资料【 】
 370、【判断题】C++中ostream类的直接基类是ios。
 A、正确
 B、错误
 参考资料【 】
 371、【判断题】cout属于标准输出流,而cerr和clog则不属于标准输出流。
 A、正确
 B、错误
 参考资料【 】
 372、【判断题】cin是输出流的一个对象,处理标准输出。
 A、正确
 B、错误
 参考资料【 】
 373、【判断题】使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象。
 A、正确
 B、错误
 参考资料【 】
 374、【判断题】使用关闭文件函数close()关闭一个文件时,但流对象仍存在。
 A、正确
 B、错误
 参考资料【 】
 375、【判断题】以app方式打开文件时,当前的读指针和写指针都定位于文件尾。
 A、正确
 B、错误
 参考资料【 】
 376、【判断题】打开ASCII码流文件和二进制流文件时,打开方式是相同的。
 A、正确
 B、错误
 参考资料【 】
 377、【判断题】设要把一个文件输出流对象myFile与文件“f:\myText.txt”相关联,所用的C++语句是ifstream myFile(f:\myText.txt,ios::in|ios::out);
 A、正确
 B、错误
 参考资料【 】
 378、【判断题】预定义的提取符和插入符是可以重载的。
 A、正确
 B、错误
 参考资料【 】
 379、【判断题】getline()函数从流中提取终止字符,但终止字符被丢弃。
 A、正确
 B、错误
 参考资料【 】
 380、【判断题】使用模板可以减少重复劳动,提高代码重用率。
 A、正确
 B、错误
 参考资料【 】
 381、【判断题】C++语言中模板分为函数模板和类模板两种。
 A、正确
 B、错误
 参考资料【 】
 382、【判断题】一个函数模板只生成一个模板函数。
 A、正确
 B、错误
 参考资料【 】
 383、【判断题】定义模板的关键字是template。
 A、正确
 B、错误
 参考资料【 】
 384、【判断题】模板定义中标识类型的参数必须用关键字Type修饰。
 A、正确
 B、错误
 参考资料【 】
 385、【判断题】函数模板可以与普通函数重载。
 A、正确
 B、错误
 参考资料【 】
 386、【判断题】类模板可以使用两种形式的参数,分别是类型参数和普通单数。
 A、正确
 B、错误
 参考资料【 】
 387、【判断题】类模板可以生成若干个模板类,每个模板类又可定义若干个对象。
 A、正确
 B、错误
 参考资料【 】