c++复习题及答案(完整版)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
37、MFC是一个功能强大、结构复杂和庞大的类库。T
38、C++支持多态性。T
40、返回值类型、参数个数和类型都相同的函数也可以重载。F
41、“引用”作为目标的别名而使用,对引用的改动实际就是对目标的改动。引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。T
42、使用关键字class定义的类中缺省的访问权限是私有(private)的。T
37、用一个对象去构造同类的另一个新对象需要调用(复制构造函数)。
38、用new为对象动态分配内存,当程序完毕必须用(delete)释放。
39、类的每个普通成员函数都有一个隐含的this指针参数,this指针指向(正在被成员函数操作)的对象。
40、设pt为T类的一个指针,pt=new T[10]操作须调用(10)次构造函数。
A可以重载B其名字与类名相同C可以显式调用构造函数D构造函数是成员函数E构造函数不能是虚函数
3、判断题(正确的请写T,错误的请写F)(20分)
静态成员函数可以直接调用类中说明的非静态成员。(F)
windows应用程序采用基于消息的事件驱动运行机制。(T)
4、找出程序中的错误并改正(10分)
class student()
20、抽象类必须有一个(纯虚)函数,并且不能产生自己的(对象)。
21、C++规定,动态联编通过多态性来实现,实现多态性的同名函数必须(形参表和返回值)相同。
22、面向对象的模型中,最基本的概念是对象和(类)。
23、软件设计模块化的目的是(降低复杂性)。
24、派生类的成员一般分为两部分,一部分是(改造基类的成员),另一部分是自己定义的新成员。
{
private:public:
display(){}
}};
//-----------------------------------------------
void g()student g()
{
student s;
return s;
}
//------------------------------------------------
10、(C)不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数必须指定类型说明
11、下列关于C++语言类的描述中错误的是(C)
3、(C)是析构函数的特征。
A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内。
4、C++语言中函数返回值的类型由(B)决定。
A、return语句的表达式的类型;B、定义函数时所指明的返回值类型;C、实参类型;D、调用函数类型
5、int a=10; int *pa=&a; int &ia=a; *pa=20; ia=30;cout<<a;则输出为(C)。
5、C++语言规定,成员函数如果被定义在类体内,则为默认为(内联成员函数)。
6、在类层次结构中,创建子类对象时,(派生类)构造函数最后被执行。
7、C++规定,运行多态性通过(基)类的指针或者(引用)调用(虚函数)来实现。
8、派生类的生成过程经历了三个步骤:(吸收基类成员)、(改造基类成员)和(添加新的成员)。
32、函数重载和运算符重载就是通过动态联编方式实现的编译时的多态的体现。F
33、虚函数是动态联编的基础。T
35、运算符重载之后运算符的优先级和结合性都会改变,并且要保持原运算符的语法结构。参数和返回值类型可以重新说明。F
36、在程序能正确支持所设计的正常情况之后,再添加语句来处理异常情况,这种思想就是异常处理。T
in Distance copy constructor.
The distance is:5
(一)填空题
在类体内使用关键字(static)说明的成员称为静态成员。
2、重载的函数要求参数的(个数)和(类型)不同。
3、如果要表示某个变量的值不能修改,用修饰符(const)限制。
4、对函数int fun( int x,int y)中的参数x指定默认值10正确的声明方式是(int fun(int y,int x=10))。
一填空题()
1、派生类的生成过程经历了三个步骤:吸收基类成员、改造基类成员、添加新成员。
2、多态分为:专用多态和通用多态。
二、选择题(10分)
1在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)比较合适。
A内联函数B重载函数C递归调用D嵌套调用
2下面对构造函数的描述不正确的是(C)
1、
#include <iostream.h>
#include <math.h>
class Point
{
public:
Point(int xx=0,int yy=0){X=xx;Y=yy;}//1、( B )
Point(const Point& p);//2、( A )
int GetX(){return X;}
cout<<"The distance is:";
cout<<myd.GetDis()<<endl;//7、( G )
}
程序运行结果:
In Point copy constructor.
In Point copy constructor.
In Point copy constructor.
In Point copy constructor.
25、在函数参数传递中,解决大的对象传递效率,最好使用(引用)为参数
26、如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是( friend class A;)。
27、如果类B继承了类A,则称类A为类B的基类,类B称为类A的(派生类)。
28、将x+y中的+运算符用友元函数重载应声明为( friend Complex operator+(const Complex &x,const Complex &y); )
27、delete运算符的功能是用来释放使用new运算符申请的内存。F
28、在私有继承方式下,基类中公有成员和保护成员在派生类中都为私有成员。T
29、基类的私有成员函数可以被继承。T
30、在多继承时,在调用不同基类中的相同成员时可能出现二义性。T
31、联编是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程。T
14、类的静态数据成员需要在定义每个类的对象时进行初始化。F
15、字符串’hello,world”在内存中存放时,占用11个字节的空间。F
16、构造函数的主要功能就是用来初始化对象。T
17、用new运算符动态分配的存储空间若不用delete释放,则程序运行结束后该空间会自动释放。F
18、基类的私有成员函数根本就不会继承,更谈不上使用。T
43、一个抽象类至少具有一个纯虚函数。T
44、类的静态数据成员需要在定义每个类的对象时进行初始化。F
45、当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。T
46、当函数的返回值是数组类型的,传递的是数组第一个元素的地址。T
47、构造函数可以声明为虚函数。F
(三)选择题
{
cout<<"2"<<endl;
double x=double(p1.GetX()-p2.GetX());
double y=double(p1.GetY()-p2.GetY());
dist=sqrt(x*x+y*y);
}
void main()
{
Point myp1(2,2),myp2(5,6);
Distance myd(myp1,myp2);
19、友元关系是单向的不可逆的。T
20、this指针隐含于每一个成员函数中。F
21基类的构造函数和析构函数是能被继承的。F
22、如果一个类中,用户没有定义拷贝构造函数时,系统自动创建一个默认的拷贝构造函数。T
24、成员函数的参数不可以设置为默认值。F
25、静态成员的特点是它不仅是属于某对象的,而是属于整个类的,即所有对象的。T
(二)判断题(正确的请写T,错误的请写F)
1、引用作为函数参数在函数内可对被直接引用的变量进行操作。T
2、函数的返回值类型不同可以重载。F
3、同类对象间可以整体赋值。T
4、类的构造函数可以重载。T
5、C++中标识符内的大小写字母是没有区别的。F
6、静态成员函数可以直接调用类中说明的非静态成员。F
7、友元破坏了类的封装和隐蔽性。T
A、a;B、b;C、c;D、abc;E、以上都不是。
8、静态数据成员的特点不正确的是(D)。
A、静态数据成员不是属于某个对象,而是属于整个类的。
B、静态数据成员不随对象的创建而分配内存空间,它也不随对象被释放而撤销。只有在程序结束时才被系统释放。
C、静态数据成员只能在类体外被初始化
D、静态数据成员可以不初始化
Distance(Point xp1,Point xp2);//4、( E )
double GetDis(){return dist;}
private:
Point p1,p2;//5、( D )
double dist;
};
Distance::Distance(Point xp1,Point xp2):p1(xp1),p2(xp2)//6、( B )
int GetY(){return Y;}//3、( C )
private:
int X,Y;
};
Point::Point(const Point& p)
{
X=p.X;
Y=p.Y;
cout<<"In Point copy constructor."<<endl;
}
class Distance
{
public:
mian()void main()
{
student s1;
s1->display();s1.display();
}
5、读程序,在语句后的括号中填入相应的选项,并写出程序运行结果结果(8个小题)(共40分结果30分选择10分)
选项:A、复制构造函数 B、构造函数 C、内联成员函数 D、对象成员 E、对象作为函数的参数 F、调用复制构造函数 G、对象调用成员函数
9、面向对象程序设计的4个基本特征是(抽象)、(继承)、(封装)、(多态)。
10、Windows应用程序采用基于(消息)的事件驱动运行机制。
11、通常将用来派生新类的类称为(基类),又称为父类,而将派生出来的新类称为(派生类),又称为子类。
12、含有(纯虚)函数的类称为抽象类。
13、引用与被引用的实体具有相同的(地址)。
8、在多继承时,在调用不同基类中的相同成员时可能出现二义性。T
9、抽象类自身无法实例化。T
10、析构函数由于没有参数,它不能被重载。T
11、使用关键字class定义的类中缺省的访问权限是public。F
12、光标、位图、对话框和菜单都是资源。T
13、说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。T
30、在多态性的实现中,在基类与派生类的虚函数除名字相同外,(形参表和返回值)也必须相同。
31、用Hale Waihona Puke onst定义的常量必须进行(赋初值)。
32、函数重载要求函数名相同,(形参个数或类型)不同。
33、构造函数名必须与类名(相同)
34、在面向对象的程序设计中,对象是指(属性)和(行为)的封装体。
36、创建对象时系统自动调用(构造)函数。
1、关于成员函数特征的下列描述中,(A)是错误的。
A、成员函数一定是内联函数;B、成员函数可以重载;C、成员函数可以设置缺省参数值;D、成员函数可以是静态的。
2、void main(){char str[10]={'a','b','c'};cout<<*str;}的输出为(A)。
A、a;B、b;C、c;D、abc;E、以上都不是。
A、10;B、20;C、30;D、40。
6、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)比较合适。
A、内联函数;B、重载函数;C、递归调用;D、嵌套调用。
7、void main(){char str[10]={'a','b','c'};cout<<str;}的输出为(D)。
14、类成员的访问权限有3种(共有类型)、(私有类型)、(保护类型)。
15、通过函数改变实参的数据,c++可以通过(指针)或者(引用)实现。
16、c++通过(函数重载)实现静态多态性,其(形参个数或类型)必须不同。
18、c++类的用途有两种,一种是生成类的对象,另一种是通过(继承)派生出新类。
19、在类Ctest的定义中,其拷贝构造函数的声明是(Ctest(Ctest &C);)。
38、C++支持多态性。T
40、返回值类型、参数个数和类型都相同的函数也可以重载。F
41、“引用”作为目标的别名而使用,对引用的改动实际就是对目标的改动。引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。T
42、使用关键字class定义的类中缺省的访问权限是私有(private)的。T
37、用一个对象去构造同类的另一个新对象需要调用(复制构造函数)。
38、用new为对象动态分配内存,当程序完毕必须用(delete)释放。
39、类的每个普通成员函数都有一个隐含的this指针参数,this指针指向(正在被成员函数操作)的对象。
40、设pt为T类的一个指针,pt=new T[10]操作须调用(10)次构造函数。
A可以重载B其名字与类名相同C可以显式调用构造函数D构造函数是成员函数E构造函数不能是虚函数
3、判断题(正确的请写T,错误的请写F)(20分)
静态成员函数可以直接调用类中说明的非静态成员。(F)
windows应用程序采用基于消息的事件驱动运行机制。(T)
4、找出程序中的错误并改正(10分)
class student()
20、抽象类必须有一个(纯虚)函数,并且不能产生自己的(对象)。
21、C++规定,动态联编通过多态性来实现,实现多态性的同名函数必须(形参表和返回值)相同。
22、面向对象的模型中,最基本的概念是对象和(类)。
23、软件设计模块化的目的是(降低复杂性)。
24、派生类的成员一般分为两部分,一部分是(改造基类的成员),另一部分是自己定义的新成员。
{
private:public:
display(){}
}};
//-----------------------------------------------
void g()student g()
{
student s;
return s;
}
//------------------------------------------------
10、(C)不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;C、构造函数必须指定类型说明
11、下列关于C++语言类的描述中错误的是(C)
3、(C)是析构函数的特征。
A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内。
4、C++语言中函数返回值的类型由(B)决定。
A、return语句的表达式的类型;B、定义函数时所指明的返回值类型;C、实参类型;D、调用函数类型
5、int a=10; int *pa=&a; int &ia=a; *pa=20; ia=30;cout<<a;则输出为(C)。
5、C++语言规定,成员函数如果被定义在类体内,则为默认为(内联成员函数)。
6、在类层次结构中,创建子类对象时,(派生类)构造函数最后被执行。
7、C++规定,运行多态性通过(基)类的指针或者(引用)调用(虚函数)来实现。
8、派生类的生成过程经历了三个步骤:(吸收基类成员)、(改造基类成员)和(添加新的成员)。
32、函数重载和运算符重载就是通过动态联编方式实现的编译时的多态的体现。F
33、虚函数是动态联编的基础。T
35、运算符重载之后运算符的优先级和结合性都会改变,并且要保持原运算符的语法结构。参数和返回值类型可以重新说明。F
36、在程序能正确支持所设计的正常情况之后,再添加语句来处理异常情况,这种思想就是异常处理。T
in Distance copy constructor.
The distance is:5
(一)填空题
在类体内使用关键字(static)说明的成员称为静态成员。
2、重载的函数要求参数的(个数)和(类型)不同。
3、如果要表示某个变量的值不能修改,用修饰符(const)限制。
4、对函数int fun( int x,int y)中的参数x指定默认值10正确的声明方式是(int fun(int y,int x=10))。
一填空题()
1、派生类的生成过程经历了三个步骤:吸收基类成员、改造基类成员、添加新成员。
2、多态分为:专用多态和通用多态。
二、选择题(10分)
1在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)比较合适。
A内联函数B重载函数C递归调用D嵌套调用
2下面对构造函数的描述不正确的是(C)
1、
#include <iostream.h>
#include <math.h>
class Point
{
public:
Point(int xx=0,int yy=0){X=xx;Y=yy;}//1、( B )
Point(const Point& p);//2、( A )
int GetX(){return X;}
cout<<"The distance is:";
cout<<myd.GetDis()<<endl;//7、( G )
}
程序运行结果:
In Point copy constructor.
In Point copy constructor.
In Point copy constructor.
In Point copy constructor.
25、在函数参数传递中,解决大的对象传递效率,最好使用(引用)为参数
26、如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是( friend class A;)。
27、如果类B继承了类A,则称类A为类B的基类,类B称为类A的(派生类)。
28、将x+y中的+运算符用友元函数重载应声明为( friend Complex operator+(const Complex &x,const Complex &y); )
27、delete运算符的功能是用来释放使用new运算符申请的内存。F
28、在私有继承方式下,基类中公有成员和保护成员在派生类中都为私有成员。T
29、基类的私有成员函数可以被继承。T
30、在多继承时,在调用不同基类中的相同成员时可能出现二义性。T
31、联编是指计算机程序自身彼此关联的过程,也就是把一个标识符名和一个存储地址联系在一起的过程。T
14、类的静态数据成员需要在定义每个类的对象时进行初始化。F
15、字符串’hello,world”在内存中存放时,占用11个字节的空间。F
16、构造函数的主要功能就是用来初始化对象。T
17、用new运算符动态分配的存储空间若不用delete释放,则程序运行结束后该空间会自动释放。F
18、基类的私有成员函数根本就不会继承,更谈不上使用。T
43、一个抽象类至少具有一个纯虚函数。T
44、类的静态数据成员需要在定义每个类的对象时进行初始化。F
45、当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。T
46、当函数的返回值是数组类型的,传递的是数组第一个元素的地址。T
47、构造函数可以声明为虚函数。F
(三)选择题
{
cout<<"2"<<endl;
double x=double(p1.GetX()-p2.GetX());
double y=double(p1.GetY()-p2.GetY());
dist=sqrt(x*x+y*y);
}
void main()
{
Point myp1(2,2),myp2(5,6);
Distance myd(myp1,myp2);
19、友元关系是单向的不可逆的。T
20、this指针隐含于每一个成员函数中。F
21基类的构造函数和析构函数是能被继承的。F
22、如果一个类中,用户没有定义拷贝构造函数时,系统自动创建一个默认的拷贝构造函数。T
24、成员函数的参数不可以设置为默认值。F
25、静态成员的特点是它不仅是属于某对象的,而是属于整个类的,即所有对象的。T
(二)判断题(正确的请写T,错误的请写F)
1、引用作为函数参数在函数内可对被直接引用的变量进行操作。T
2、函数的返回值类型不同可以重载。F
3、同类对象间可以整体赋值。T
4、类的构造函数可以重载。T
5、C++中标识符内的大小写字母是没有区别的。F
6、静态成员函数可以直接调用类中说明的非静态成员。F
7、友元破坏了类的封装和隐蔽性。T
A、a;B、b;C、c;D、abc;E、以上都不是。
8、静态数据成员的特点不正确的是(D)。
A、静态数据成员不是属于某个对象,而是属于整个类的。
B、静态数据成员不随对象的创建而分配内存空间,它也不随对象被释放而撤销。只有在程序结束时才被系统释放。
C、静态数据成员只能在类体外被初始化
D、静态数据成员可以不初始化
Distance(Point xp1,Point xp2);//4、( E )
double GetDis(){return dist;}
private:
Point p1,p2;//5、( D )
double dist;
};
Distance::Distance(Point xp1,Point xp2):p1(xp1),p2(xp2)//6、( B )
int GetY(){return Y;}//3、( C )
private:
int X,Y;
};
Point::Point(const Point& p)
{
X=p.X;
Y=p.Y;
cout<<"In Point copy constructor."<<endl;
}
class Distance
{
public:
mian()void main()
{
student s1;
s1->display();s1.display();
}
5、读程序,在语句后的括号中填入相应的选项,并写出程序运行结果结果(8个小题)(共40分结果30分选择10分)
选项:A、复制构造函数 B、构造函数 C、内联成员函数 D、对象成员 E、对象作为函数的参数 F、调用复制构造函数 G、对象调用成员函数
9、面向对象程序设计的4个基本特征是(抽象)、(继承)、(封装)、(多态)。
10、Windows应用程序采用基于(消息)的事件驱动运行机制。
11、通常将用来派生新类的类称为(基类),又称为父类,而将派生出来的新类称为(派生类),又称为子类。
12、含有(纯虚)函数的类称为抽象类。
13、引用与被引用的实体具有相同的(地址)。
8、在多继承时,在调用不同基类中的相同成员时可能出现二义性。T
9、抽象类自身无法实例化。T
10、析构函数由于没有参数,它不能被重载。T
11、使用关键字class定义的类中缺省的访问权限是public。F
12、光标、位图、对话框和菜单都是资源。T
13、说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。T
30、在多态性的实现中,在基类与派生类的虚函数除名字相同外,(形参表和返回值)也必须相同。
31、用Hale Waihona Puke onst定义的常量必须进行(赋初值)。
32、函数重载要求函数名相同,(形参个数或类型)不同。
33、构造函数名必须与类名(相同)
34、在面向对象的程序设计中,对象是指(属性)和(行为)的封装体。
36、创建对象时系统自动调用(构造)函数。
1、关于成员函数特征的下列描述中,(A)是错误的。
A、成员函数一定是内联函数;B、成员函数可以重载;C、成员函数可以设置缺省参数值;D、成员函数可以是静态的。
2、void main(){char str[10]={'a','b','c'};cout<<*str;}的输出为(A)。
A、a;B、b;C、c;D、abc;E、以上都不是。
A、10;B、20;C、30;D、40。
6、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(A)比较合适。
A、内联函数;B、重载函数;C、递归调用;D、嵌套调用。
7、void main(){char str[10]={'a','b','c'};cout<<str;}的输出为(D)。
14、类成员的访问权限有3种(共有类型)、(私有类型)、(保护类型)。
15、通过函数改变实参的数据,c++可以通过(指针)或者(引用)实现。
16、c++通过(函数重载)实现静态多态性,其(形参个数或类型)必须不同。
18、c++类的用途有两种,一种是生成类的对象,另一种是通过(继承)派生出新类。
19、在类Ctest的定义中,其拷贝构造函数的声明是(Ctest(Ctest &C);)。