C++部分:
一、选择题:(共10小题,每题3分)
1.类的构造函数被自动调用执行的情况是在定义该类的( C)
A)成员函数时
B)数据成员时
C)对象时
D)友元函数时
2.说明友元函数使用关键字( A )
A)friend
B)static
C)const
D)colatile
3.已知类X中的一个成员函数说明如下:
Void Set(x &a); 其中,X&a的含义是(C )
A)指向类X的指针为a
B)将a的地址赋给变量Sst
C)a是类X的对象引用,用来做为Set()的形参
D)变量X是a按位相与作为函数Set()的参数
4.关于new运算符的下列描述中( C )是错误的.
A) 它可以用来动态创建对象和对象数组
B) 使用它创建对象或对象数组,可以使用运算符DELETE删除
C) 使用它创建对象时要调用构造函数
D) 使用它调用对象数组时不E) 许指F) 定初始值
5.允许访问类的所有对象的私有成员,公有成员和保护成员的是( A )
A)友元函数
B)成员函数
C)内联函数
D)重载函数
6.局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用( A )
提供对全局变量的访问
A) 域运算符
B) 类运算符
C) 重载
D) 引用
7.缺省析构函数的函数体是( C)
A)不存在const的作用
B)随机产生的
C)空的
D)无法确定的、
8.通常拷贝构造函数的参数表是( C )
A)某个对象名
B)某个对象的成员名
C)某个对象的引用名
D)某个对象的指针名
9.对定义重载函数的下列要求中,( D) 是错误的
A)要求参数的个数不同
B)要求参数中至少有一个类型不同
C)要求参数个数相同时,参数类型不同
D)要求函数的返回值不同
10.对于多重继承,有( D )
A.一个派生类只能有一个基类
B.一个基类只能产生一个派生类
C.一个基类必须产生多个派生类
D.一个派生类可有多个基类
二、简答题:(共8小题, 总分:30)
1.C和C++有什么不同?(3分)
C是面向过程的语言,c++是面向对象的语言。
C源程序文件扩展名为.c , 而C++为 .cpp。
C++可重用性、可扩充性、可维护性、可靠性要强些。
2.面向对象的三个基本特征及各自的作用(4分)
封装性:对象将私有元素和实现操作的内部细节的结果隐藏起来,并能管理自己的内部状态。 作用:外部只能从对象所表示的具体概念、对象提供的服务和对象提供的外部接口来认识对象。
继承:类间具有共享特征,具有新增部分,具有层次结构。
作用:避免公用代码的重复开发,减少代码和数据冗余。通过增强一致性来减少模块间的接口和界面。
多态性:类中具有相似功能的不同函数使用同一个名称来实现的现象。实现了动态联编,使程序运行效率更高,更容易维护和操作。
3.c和c++中的struct有什么不同?(4分)
C 中定义结构体变量要加struct,而C++不用,如下例:
struct STRING{
char *prt;
int length;
}
在C中: 在C++中:
struct STRING str; STRING str;
4.const符号的作用有哪些?(4分)
Const修饰符定义常量。
(1)欲阻止一个变量被改变,可以使用const关键字。
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
5.引用与指针有什么区别?(3分)
引用就是给变量一个别名,使指针运算更加方便。
指针是一个实体,而引用仅是个别名;
引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;
引用不能为空,指针可以为空;
引用是类型安全的,而指针不是(引用比指针多了类型检查)
6.重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?(3分)
1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关 系,是水平关系。
2、覆盖要求参数列表相同;重载要求参数列表不同。
3、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。
7.static 在类内修饰成员的作用是什么,如何引用这些成员?(4分)
表明该成员是静态成员,有点类似于全局变量。可以通过“类名::"和“对象名.”两种方法来访问。
8.虚析构函数的作用是什么?(5分)
在于使用delete运算符删除一个对象时,能确保析构函数被正确的执行。
三、编程题:(共3小题 每小题6分)
1.编写一个字符串处理的类,MyString,实现拷贝构造,‘=’号重载 等基本函数。
#include <iostream>
class MyString
{
char *str;
public:
MyString(char *s)
{
str=new char [strlen(s)+1];
strcpy(this->str,s);
}
MyString(const MyString &temp)
{
str=new char[strlen(temp.str)+1];
strcpy(str,temp.str);
}
~MyString()
{
delete str;
}
MyString & operator = (const MyString &temp)
{
delete[] this->str;
this->str=new char[strlen(temp.str)+1];
if(this->str)
{
strcpy(this->str,temp.str);
}
return *this;
}
};
2.使用MyString作为成员对象实现一个Person类,包含:姓名,年龄。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论