面向对象程序设计复习题
- 格式:doc
- 大小:207.00 KB
- 文档页数:19
一、单项选择题。
1引入内联函数的主要目的是A)缩短程序代码,少占用内存空间B.既可以保证程序的可读性,又能提高程序的运行效率C)提高程序的执行速度D)使程序的结构比较清晰2重载函数是A)以函数参数来区分,而不用函数的返回值来区分不同的函数B.以函数的返回值来区分,而不用函数参数来区分不同的函数C)参数表完全相同而返回值类型不同的两个或多个同名函数D)参数表和返回值类型都必须是不同的两个或多个同名函数3有函数原型 void fun2 (int *), 下面选项中,正确的调用是A) double x = 2.17。
fun2 (&x)。
C) int a = 15。
fun2 (a*3.14)。
B) int b = 100。
fun2 (& b)。
D) fun2 (256)。
4在C++中,要实现动态联编,必须使用( )调用虚函数。
A) 类名B) 派生类指针 C)对象名D) 基类指针5 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是A)派生类的对象可以直接访问基类中的所有成员B)派生类的对象可以初始化基类的引用C)派生类的对象可以赋给基类的对象D) 派生类的对象的地址可以赋给指向基类的指针6设置虚基类的目的是A)消除两义性 B) 简化程序C)提高运行效率 D)减少目标代码7关于构造函数,以下说法错误的是A) 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。
在对象创建时由系统自动调用。
B) 基类的构造函数可以被派生类所继承。
C) 如果程序中未声明,则系统自动产生出一个缺省形式的构造函数。
D) 允许为内联函数、重载函数、带缺省形参值的函数。
8下列关于C++函数的说明中,正确的是A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)标准C++要求在调用一个函数之前,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式9 由于常对象不能被更新,因此A)通过常对象只能调用它的常成员函数B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员D)通过常对象可以调用任何不改变对象值的成员函数10下列关于虚函数的说明中,正确的是A)从虚基类继承的函数都是虚函数 B)虚函数不得是静态成员函数C)只能通过指针或引用调用虚函数 D)抽象类中的成员函数都是虚函数11 运算符重载是对已有的运算符赋予多重含义,因此A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B)可以改变一个已有运算符的优先级和操作数个数C)只能重载C++中已经有的运算符,不能定义新运算符D)C++中已经有的所有运算符都可以重载12模板对类型的参数化提供了很好的支持,因此A)类模板的主要作用是生成抽象类B)类模板实例化时,编译器将根据给出的模板实参生成一个类C)在类模板中的数据成员都具有同样类型D)类模板中的成员函数都没有返回值13下列符号中可以用作C++标识符的是A)_radius B)foo~bar C)else D)3room14下列语句中,错误的是A)const int buffer=256。
面向对象程序设计考试题型:1)选择题10题,共20分2)填空题10题,共20分3)程序阅读题3题,共15分4)程序填空题,10空,共20分5)简答题3题,共15分6)编程题1题,共10分一、选择题:1.属于C#语言的关键字( )。
A. abstractB. camelC. SalaryD. Employ答案:A2.C#语言中,值类型包括:基本值类型、结构类型和()。
A.小数类型B.整数类型C.类类型D.枚举类型答案:D3. 假定一个10行20列的二维整型数组,下列哪个定义语句是正确的()。
A. int[]arr = new int[10,20]B. int[]arr = int new[10,20]C. int[,]arr = new int[10,20]D. int[,]arr = new int[20;10]答案:C4.在类作用域中能够通过直接使用该类的()成员名进行访问。
A. 私有B. 公用C. 保护D. 任何答案:D5.小数类型和浮点类型都可以表示小数,正确说法:( )A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低答案:C6.能作为C#程序的基本单位是( )。
A. 字符B. 语句C. 函数D. 源程序文件答案:B7. 可用作C#程序用户标识符的一组标识符是( )。
A. void define +WORDB. a3_b3 _123 YNC. for -abc CaseD. 2a DO sizeof答案:B8.引用类型主要有4种:类类型、数组类型、接口类型和()。
A.对象类型B.字符串类型C.委托类型D.整数类型答案:C9.StreamWriter对象的下列方法,可以向文本文件写入一行带回车和换行的文本的是()。
A.WriteLine()B.Write()C.WritetoEnd()D.Read()答案:A10.建立访问键时,如“新建(N)”菜单中的“N”键,需在菜单标题的字母前添加的符号是( )。
《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。
A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。
A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。
C++有(B)关联。
A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。
A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。
A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。
A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。
《面向对象程序设计》复习题(专升本)一、填空题1.当建立,程序自动调用该类的构造函数。
2.3.模板对处理数据的类型的要求不同可以分为两种类型:和。
4.5.6.面向对象程序设计的机制提供了重复利用程序资源的一种途径。
7.8.定义模板的关键字是。
9.对象的核心概念就是通常所说的、、。
10.面向对象的英文缩写是:。
11.在面向对象程序设计中,具有相同属性和服务的一组对象的集合称为。
12.已知X=2,y=3,x<y的值是:。
13.#include<iostream>命令中,include的意义是:。
14.C++语言中的每条基本语句以作为结束符。
15.假定一个一维数组的定义为char a[8];则该数组所含元素的个数为,所占存储空间的字节总数为。
16.条件1≤x<10用逻辑表达式表示为。
17.C++程序主要有三种基本控制结构,分别是顺序结构、条件分支结构和。
18.对一个类中的数据成员的初始化,可以通过来实现,也可以通过来实现。
19.假定AB为一个类,则执行AB a(10);语句时,系统自动调用该类的构造函数的次数为。
二、选择题1、 C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型;D、引进了类和对象的概念;2、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )。
A.类B.对象C.函数体D.数据块3、关于new运算符的下列描述中,()是错误的。
A、它可以用来动态创建对象和对象数组;B、使用它创建的对象或对象数组可以使用运算符delete删除;C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值;4、()不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明。
面向对象程序设计复习题一一.名词解释1、构造函数自定义数据类型,由数据成员、方法成员构成,具有封装作用2、对象按照数据类型分配的内存空间,可以实现方法的调用3、运算符重载本质是全局对象,但是纳入到了类的管理4、析构函数负责完成对象的创建和初始化5、组合两个类之间的一种关系,其中一个类拥有另一个类的全部操作和数据二.简答。
1、什么是面向过程设计思想?构造函数;拷贝构造函数;赋值运算符2、比较Java和C++?C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public3、重载的意义?重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。
4、类和结构体的主要区别是什么?当成员默认属性时,类默认为private,而结构体默认为public5、比较继承与组合。
继承与组合解决的都是复用问题,继承解决的是类似生物遗传的复用,组合描述的是装配关系,当二者皆可用的时候要符合组合优先的原则三.辩析(可以不说出对错但是要给出评价)1、派生类方法可以访问父类的全部成员。
符合里氏替换原则2、静态数据成员是属于类的。
public修饰符号允许外界方法访问本作用域内的成员,因此破坏了封装性3、private继承方式不能产生子类。
private方式派生的类不能完成父类的全部功能,所以不能产生子类。
4、不能实例化的类一定是抽象类。
类的构造函数设为非public属性即不能实例化5、面向对象思想适合解决复杂的问题。
静态数据成员不属于对象,因此在main函数之前构造四.综合回答1. 请介绍运算符重载的意义。
答:函数重载实现了用同名函数处理同类操作的问题,降低了程序员的负担;运算符重载的本质是函数重载;运算符是程序员更熟练内容,也是为了降低程序员的负担;2. 谈谈多态的意义。
答:多态实现了用同一个指针管理继承类树并保证函数调用功能丰富性的特点;3. 面向对象程序设计思想的优点和缺点。
答:可以实现软件复用;可管理性、可重用性、可扩展性;开发周期短;强壮性好。
面向对象程序设计期末复习题一、单项选择题1.对于类中定义的成员,其隐含访问权限为【 B 】A) public B) private C) static D)protected2.关于类和对象不正确的说法是【 B 】A) 类是一种类型,它封装了数据和操作 B) 一个类的对象只有一个C) 对象是类的实例D) 一个对象必属于某个类3.下面关于对象概念的描述中,【 C 】是错误的。
A)对象代表着正在创建的系统中的一个实体B)对象就是C语言中的结构体变量C)对象是一个状态和操作(或方法)的封装体D)对象之间的信息传递是通过消息进行的4. 使用派生类的主要原因是【 A 】。
A)提高代码的可重用性B)提高程序的运行效率C)加强类的封装性D)实现数据的隐藏5. 有关析构函数的说法不正确的是【D 】A)析构函数有且只有一个B)析构函数无任何函数类型C)析构函数没有形参D)析构函数的作用是在对象被撤消时收回先前分配的内存空间6. 声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为【 C 】A) 成员函数;构造函数B) 复制构造函数;析构函数C) 构造函数;析构函数D) 析构函数;复制构造函数7. 下列关于运算符重载的描述中,【 D 】是正确的。
A)运算符重载可以改变操作数的个数B)运算符重载可以改变优先级C)运算符重载可以改变结合性D)运算符重载不可以改变语法结构8. 能用友元函数重载的运算符是【 A】。
A)+ B)= C)[] D)->9.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的【 A 】A) private成员B) protected成员C) public成员D) 友元10.在C++中,要实现动态联编,必须使用【D】调用虚函数A) 类名B) 派生类指针C) 对象名D) 基类指针11.若一个类中含有纯虚函数,则该类称为【 A 】A) 抽象类B) 纯基类C) 派生类D) 基类12.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式【 B 】A) ios:: out B) ios:: inC) ios::in|ios::out D) ios::binary13.通常拷贝构造函数的参数是【 C 】。
C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
15题,每小题2分,共30分) [主要从作业题目中抽出来]2. 填空题。
(10题,每小题3分,共30分)3、阅读程序,写出程序运行结果。
【也称计算题】(3题,每小题5分,共15分)4、程序编制题【也称综合分析题】。
(第1、2题每题8分,第3题9分,共25分) 重点复习内容打*号是重点,打▲号是编程题出题范围* 基本概念,对象,消息,类。
面向对象系统特性,封装性,继承性,多态性。
*▲C++类的构成,类与对象,构造与析构,动态存储,类嵌套。
静态成员,对象数组,友元。
*函数重载。
运算符重载。
*引用定义与引用参数* 基类与派生类的定义。
* 基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。
多继承与虚基类。
*多态性与虚函数。
纯虚函数、抽象类。
*▲函数模板。
*▲使用类来定义对象并在程序中的应用题型样题填空题 1. 假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为_________。
答案:102.可以用p.a的形式访问派生类对象P的基类成员a,其中a是_________。
答案:公有继承的公有成员3.能作为重载函数的调用的依据是_________。
答案:参数个数、参数类型4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是_________答案:eof5.函数重载是指_________。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同6.在派生类中重新定义虚函数时必须在_________ 方面与基类保持一致。
答案:参数个数阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}void disp(){cout<<“x=”<<x<<“,y”=<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0x=2,y=3x!=yx=y2.分析以下程序的执行结果#include<iostream.h>int add(int x,int y){return x+y;}int add(int x,int y,int z){return x+y+z;}void main(){int a=4,b=6,c=10;cout<<add(a,b)<<,<<add(a,b,c)<<endl; }解:10,20 3.分析以下程序执行结果#include<iostream.h>int add(int x,int y){return x+y;}double add(double x,double y){return x+y;}void main(){int a=4,b=6;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl; }解:10,104.分析以下程序执行的结果#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1,s2(1,2),s3(10,20);Sample *pa[3]={&s1,&s2,&s3};for(int i=0;i<3;i++)pa[i]->disp();}解:x=0,y=0x=1,y=2x=10,y=20 5. 分析以下程序的执行结果:#include<iostream.h>class base{int n;public:base(){};base (int a){cout << "constructing base class" << endl; n=a;cout << "n= "<< n << endl;}~base() { cout << "destructing base class" << endl; }};class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class "<< endl; m=b;cout << "m= "<< m << endl;}~subs() { cout << "destructing sub class "<< endl; }};void main (){subs s(1,2);}解:constructing base classn= 1constructing sub classm= 2destructing sub classdestructing base class6.分析以下程序的执行结果:#include <iostream.h>class Sample{protected:int x;public:Sample() { x=0; }Sample(int val) { x=val; }void operator++() { x++; }};class Derived:public Sample{int y;public:Derived():Sample(){ y=0; }Derived(int val1,int val2):Sample(val1){ y=val2; }void operator--(){ x--;y--;}void disp(){cout<<"x="<< x << ",y=" << y << endl; }};void main (){Derived d(3,5);d.disp();d++;d.disp ();d--;d--;d.disp();}解:x=3,y=5x=4,y=5x=2,y=37 分析以下程序执行结果:#include <iostream.h>class A{public:A(char *s) { cout << s << endl; }~A() {}};class B:public A {public:B(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class C:public A{public:C(char *sl,char *s2) :A(sl){cout << s2 << endl;}};class D:public B,public C{public:D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3){cout << s4 << endl;}};void main (){D d("class A","class B","class C","class D");}解:class Aclass Bclass Aclass Cclass D 补充例题1.分析以下程序的执行结果#include<iostream.h>template <class T>T max(T x,T y){ return (x>y?x:y); }void main(){ cout<<max(2,5)<<“,”<<max(3.5,2.8)<<endl; }解答:5,3.5 2.分析以下程序的执行结果#include<iostream.h>void main(){int a[]={10,20,30,40},*pa=a;int *&pb=pa;pb++;cout<<*pa<<endl;}解答:输出为:20 3.分析以下程序的执行结果#include<iostream.h>template <class T>T abs(T x){ return (x>0?x:-x); }void main(){ cout<<abs(-3)<<“,”<<abs(-2.6)<<endl; }解答:输出为:3,2.64.分析以下程序的执行结果#include<iostream.h>class Sample{char c1,c2;public:Sample(char a){c2=(c1=a)-32;}void disp(){ cout<<c1<<“转换为”<<c2<<endl; } };void main(){Sample a('a'),b('b');a.disp();b.disp();}解答:a转换为Ab转换为B 5.分析以下程序的执行结果#include<iostream.h>void main(){int a;int &b=a; // 变量引用b=10;cout<<“a=”<<a<<endl;} 解答:输出为:a=10 6.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x++ +10;}void disp(){cout<<“x=”<<x<<endl; }};void main(){ Sample s1(2),s2(s1);s1.disp();s2.disp();}解答:x=3 // ++运算的结果x=12 // 2+107.分析以下程序的执行结果#include<iostream.h>class Sample{int x;public:Sample(){};Sample(int a){x=a;}Sample(Sample &a){x=a.x+1;}void disp(){cout<<“x=”<<x<<endl; } };void main(){ Sample s1(2),s2(s1);s2.disp();}解答:输出为:x=3。
《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。
3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。
5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。
6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。
1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。
A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。
A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。
A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。
A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。
A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。
A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。
A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。
A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。
《面向对象程序设计技术》复习题一、单项选择题(将正确答案选项的字母填入答题纸的表格中,每小题2分,共20分)1.对象是构成现实世界的一个独立单位,它具有自己的静态特征和()特征。
A. 颜色 B. 动态 C. 状态 D. 重量2.使用JDK编译Java程序时使用的命令是()。
A. javaB. javacC. appletviewerD. javadoc3.在Java程序中包含主方法的类被称为主类,主方法的访问控制修饰符为()。
A. privateB. protectedC. publicD. static4.在类的定义中,若需要把一个标识符定义为常量,则使用的修饰符为()。
A. constB. finalC. staticD. class5.在程序中声明包的语句关键字为()。
A. volatileB. packC. importD. package6.组成Java程序的最小单位是()。
A. 类B. 方法C. 变量D. 常量7.在Java程序中包含主方法的类被称为主类,主方法名为()。
A. MainB. mainC. voidD. args8.在Java程序中包含主方法的类被称为主类,主方法的访问控制修饰符为()。
A. privateB. protectedC. publicD. static9.在程序中引入包的语句关键字为()。
A. volatileB. packC. importD. package10.具有()访问权限的成员能够被本类和任何其他类中的成员所访问。
A. publicB. protectdC. privateD. 缺省11. 具有相同属性和服务的一组对象的模板称为()。
A. 程序B. 类C. 代码D. 概念12. 把对象的属性和服务组合成一个独立的整体,尽可能隐蔽其内部的细节,这称为对象的()。
A. 封装性B. 多态性C. 继承性D. 开放性13.使用JDK编译Java程序时使用的命令是()。
基本概念的串讲:类概念由来:封装数据,类型定义类定义:✓关键字✓类名✓类作用域✓类成员✓类定义的文件组织方式✓文件后缀。
类成员的访问权限控制publicprotectedprivate注意缺省访问权限控制方式 private访问方式对象概念,如何理解申明方式:普通,数组,指针,指针数组对象的初始化对象的应用对象的生存期✓局部对象✓静态对象(static: 初始化, 程序范围)✓全局对象(程序范围)构造与析构构造函数✓功能✓形式:(~className, 无返回类型)✓调用时机✓构造函数重载✓拷贝构造函数/P300析构函数✓形式(~className, 无返回类型,无参数)✓功能✓调用时机指针,数组和字符串指针概念和申明初始化/释放指针运算符(*, &)指针运算指向对象的指针数组定义/申明(多维)指针与数组的关系字符串定义:“this is a char string!”存储结构指针方式数组方式字符串操作的常用库函数掌握:strlen,strcpy,strcat,strcmp,继承概念继承方式:单继承,多继承语法继承成员的访问控制规则派生类对象的存储结构派生类对象和基类对象之间的类型兼容性派生类对象的初始化✓初始化方式✓初始化顺序/构造与析构顺序✓继承成员的重定义和重载,调用优先级 多继承✓多继承子类对象的存储结构✓多继承的二义性✓虚继承✓构造顺序●虚基类构造●基类构造●成员对象的构造●派生类对象的构造多态性函数重载✓如何区别重载函数不同功能:P294 构造函数重载/析构不重载/拷贝构造函数P304运算符重载✓定义形式返回类型 operator 运算符(参数表)✓实现形式返回类型类名::operator 运算符(参数表) 虚函数→[动态绑定/动态联编]→多态前提✓指针/引用对虚函数的调用✓基类对象指针可指向公有派生类对象 抽象类:无实例对象纯虚函数模板类概念定义✓template <class 参数1, ….>✓class className{};实现形式✓template <class 参数1, ….>✓返回类型 className<参数1,..>::函数(){} 实例化✓className<实际类型参数1,…> 对象名I/O文件的概念C++流类库的基本结构istream和ostream提供的常用成员函数✓put(),write()✓read(),gcount(),get(), getline() 文件的打开/关闭文本文件的读写二进制文件的读写基本概念辨析1. 编写C++程序一般需经过的几个步骤依次是( B )。
A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接2. 能作为C++程序的基本单位是( B )。
A. 字符B. 语句C. 函数D. 源程序文件3. 程序中主函数的名字为( A )。
A. mainB. MAINC. MainD. 任意标识符4. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( C )。
A. 12B. 144C. 156D. 2885. 函数重载是指( A )。
A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同6. 以下关于函数模板叙述正确的是( C )。
A. 函数模板也是一个具体类型的函数B. 函数模板的类型参数与函数的参数是同一个概念C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数D. 用函数模板定义的函数没有类型7. 设有如下函数定义int f(char *s) {char *p=s;while(*p!=’\0’) p++;return(p-s);}在主函数中用cout<<f(“good”)调用上述函数, 则输出结果为( B )。
A. 3B. 4C. 5D. 68. 若用数组名作为函数调用的实参,传递给形参的是( A )。
A. 数组的首地址B. 数组中第一个元素的值C. 数组全部元素的值D. 数组元素的个数9. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()B. strcap()C. strcat()D. strcmp()10. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( C )。
//deleteA. int *p=new a[10];B. int *p=new float[10];C. int *p=new int[10];D. int *p=new int[10]={1,2,3,4,5}11. 类中定义的成员默认为( B )访问属性。
A. publicB. privateC. protectedD. friend12. 假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( C )。
A. 0B. 1C. nD. n-113. 假定AB为一个类,则执行“AB a[10];”语句时调用该类无参构造函数的次数为( D )。
A. 0B. 1C. 9D. 1014. 静态数据成员的初始化是在()中进行的。
A. 构造函数B. 任何成员函数C. 所属类D. 全局区15. 当保护继承时,基类的()在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。
A. 任何成员B.公有成员和保护成员C. 保护成员和私有成员D.私有成员16. 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。
A. 自己所属类、对象成员所属类、基类B. 对象成员所属类、基类、自己所属类C. 基类、对象成员所属类、自己所属类D. 基类、自己所属类、对象成员所属类17. 派生类的对象对其基类中()可直接访问。
A. 公有继承的公有成员B. 公有继承的私有成员C. 公有继承的保护成员D. 私有继承的公有成员1、对类的构造函数和析构函数描述正确的是。
A) 构造函数可以重载,析构函数不可以重载B) 构造函数不能重载,析构函数可以重载C) 构造函数可以重载,析构函数也可以重载D) 构造函数不能重载,析构函数也不能重载2、对于结构中定义的成员,其默认的访问权限为。
A) public B)protected C)private D)static3、假定MyClass为一个类,则执行MyClass a[3], *p[2]语句时,程序会自动调用该类的构造函数次。
A) 2 B)3 C)4 D)54、假定一个类是Student,那么该类的拷贝构造函数是()。
A)Student(Student s );B)Student(Student *s );C)Student(Student &s );D)Student*(Student s );5、下列运算符中,运算符在C++中不能重载。
A) = B) () C) :: D) delete6、C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是,即派生出新的类。
A) 复用B) 继承C) 封装D)引用7、下列关于继承的描述中,错误的是。
A) 析构函数不能被继承B) 派生类是基类的组合C) 派生类的成员除了它自己的成员外,还包含了它的基类的成员D) 派生类中继承的基类成员的访问权限到派生类保持不变8、下面叙述错误的是。
A) 基类的protected成员在派生类中仍是protected的B) 基类的protected成员在public派生类中仍是protected的C) 基类的protected成员在private派生类中是private的D) 基类的protected成员不能被派生类的对象所访问9、下列关于动态联编的描述中,错误的是。
A) C++动态联编是以虚函数为基础的B) 动态联编是在运行时确定所调用的函数代码C) 动态联编调用函数操作是指向对象的指针或对象引用D) 动态联编是在编译时确定操作函数10、以下成员函数能正确表示纯虚函数。
A) virtual int vf(int); B) void vf(int)=0;C) virtual void vf()=0; D) virtual void vf(int){}11、C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型;D、引进了类和对象的概念;12、下列描述中,()是错误的。
A、内联函数主要解决程序的运行效率问题;B、内联函数的定义必须出现在内联函数第一次被调用之前;C、内联函数中可以包括各种语句;D、对内联函数不可以进行异常接口声明;13、在C++中,关于下列设置缺省参数值的描述中,()是正确的。
A、不允许设置缺省参数值;B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C、只能在函数的定义性声明中指定参数的缺省值;D、设置缺省参数值时,必须全部都设置;14、()不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数可以设置缺省参数;D、构造函数必须指定类型说明。
15、()是析构函数的特征。
A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内;D、一个类中只能定义一个析构函数;16、关于成员函数特征的下列描述中,()是错误的。
A、成员函数一定是内联函数;B、成员函数可以重载;C、成员函数可以设置缺省参数值;D、成员函数可以是静态的;17、下列静态数据成员的特性中,()是错误的。
A、说明静态数据成员时前边要加修饰符static;B、静态数据成员要在类体外进行初始化;C、静态数据成员不是所有对象所共用的;D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符;18、友元的作用是()。
A、提高程序的运用效率;B、加强类的封装性;C、实现数据的隐藏性;D、增加成员函数的种类;19、关于new运算符的下列描述中,()是错误的。
A、它可以用来动态创建对象和对象数组;B、使用它创建的对象或对象数组可以使用运算符delete删除;C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值;20、关于delete运算符的下列描述中,()是错误的。
A、它必须用于new返回的指针;B、使用它删除对象时要调用析构函数;C、对一个指针可以使用多次该运算符;D、指针名前只有一对方括号符号,不管所删除数组的维数。