C++练习题.docx
- 文档编号:4043952
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:17
- 大小:20.46KB
C++练习题.docx
《C++练习题.docx》由会员分享,可在线阅读,更多相关《C++练习题.docx(17页珍藏版)》请在冰点文库上搜索。
C++练习题
C++练习题
(1)
班级姓名学号
一、概念填空题
1.1类定义的关键字是class。
类的数据成员通常指定为私有成员。
类的函数成员通常指定为公有成员,指定为公有的类成员可以在类对象所在域中的任何位置访问它们,类的私有只能被该类的成员函数或友元函数访问。
1.2类的访问限定符包括public、private和protected。
类成员默认的访问方式是private。
访问限定符在类中无先后次序,各限定符允许(允许/不允许)多次出现
1.3构造函数的任务是创建对象。
类中可以有多个构造函数,它们由参数区分。
如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数完成(完成/不完成)对象初始化工作。
1.4复制构造函数的参数是类对象引用,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。
复制构造函数被调用情况3种。
1.5析构函数在对象撤销时被自动调用。
类中没有定义析构函数时,编译系统会提供一个默认的析构函数。
该函数不完成(完成/不完成)具体对象的清理工作。
二、简答题
2.1为什么说类与对象的概念是客观世界的反映?
答:
现实世界每个个体有特征与行为,这些特征与方法抽象概括成为更高级的存在,如女人与男人可概括抽象为人类,人与动物概括抽象为生物等等…而女人与男人,人与动物分别是人类与生物的具体对象,有共同的地方,但也有差别,如女人与男人的性别,身体特征…
对象与类正是这种男人、女人与人类的概括抽象关系,类派的属性与方法,是对象的概括和抽象没有具体实现,但类声明的对象是类的具体实例,有各自的具体属性与方法,如汽车类创建的,奥迪q7,奥迪a4,不仅颜色不一样,连重量与车型也有差别。
2.2简单解释什么是面向对象程序设计的封装性。
答:
封装性具体是指类对属性与方法的隐藏,在类的外部,尽管可以创建对象实例,但对其本身的属性与方法有不同的访问权限,不能直接访问某部分属性与方法,必须通过类的接口实现对属性与方法的访问。
总的来说,封装性指对属性和方法的隐藏,唯有通过其提供的借口才能够访问。
2.3引用作为函数参数时为什么能实现两个实参之间的数据交换?
为什么对应实参不能为引用?
为什么返回值为引用的函数可以作为左值?
答:
引用是对实体的间接操作,不存在另外的内存,且可以改变实体的内容,但前提是引用具有实体。
所以引用做参数时,对引用的操作可以看做对实体的操作,即实现了两个实参之间的数据交换。
引用做参数时,实参是实体,但实参是引用后,引用是没有内存的,即不可以作为实体,所以对应实参不能为引用。
…
2.4什么是默认的构造函数?
默认的构造函数可以有多少个?
答:
默认的构造函数指没有用户自定义的构造函数时,系统提供的无参,没有函数体的只用来创建对象的构造函数。
默认的构造函数只有一个。
2.5为什么在友元函数的函数体内访问对象成员时,必须用对象名加运算符“.”再加对象成员名?
答:
友元函数不属于类的成员函数,即不可以直接访问对象的成员,必须通过对象来进行访问,但特殊的,与成员函数一样,对象的成员对其没有访问限制。
2.6类的静态数据成员与函数中的静态成员有何异同?
答:
类的静态成员为所有的对象共享,可以直接或通过接口访问,且只有唯一内存。
函数的静态成员只在函数体内有效(局部变量),但其只作一次声明,每次进入该函数都保存上一次的操作,直到程序结束才释放内存。
2.7类的成员函数在什么情况下应该定义为私有的?
这样做的目的是什么?
答:
类要创建对象必须调用构造函数,所以构造函数不能定义为私有,同理,析构函数也不能定义为私有,且类的接口函数不能为私有。
目的是为了阻止类外部对其的访问,保证了其的封装性。
2.8友元关系有何性质?
友元关系的优点和缺点各有哪些?
答:
可以不受类的访问限制,它可以直接访问私有成员,方便了数据的数据的交换但破坏了类特有的封装性。
三、选择题
3.1数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(B)。
A.类B.对象C.函数体D.数据块
3.2类的实例化是指(B)。
A.定义类B.创建类的对象C.指明具体类D.调用类的成员
3.3下列说法中正确的是(B)。
A.类定义中只能说明函数成员的函数头,不能定义函数体
B.类中的函数成员可以在类体中定义,也可以在类体之外定义
C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D.在类体之外定义的函数成员不能操作该类的私有数据成员
3.4有如下类定义:
classsample
{
intn;
public:
sample(inti=0):
n(i){}
voidsetValue(intn0);
};
下列关于setValue成员函数的实现中,正确的是(B)。
A.sample:
:
setValue(intn0){n=n0;}
B.voidsample:
:
setValue(intn0){n=n0;}
C.voidsetValue(intn0){n=n0;}
D.setValue(intn0){n=n0;}
3.5在下面的类定义中,错误的语句是(C)。
classsample
{
public:
sample(intval);//①
~sample();//②
private:
inta=2.5;//③
public:
sample();//④
};
A.①B.②C.③D.④
3.6类的构造函数被自动调用执行的情况是在创建该类的(C)。
A.成员函数时B.数据成员时
C.对象时D.友元函数时
3.7(A)是析构函数的特征。
A.一个类中只能定义一个析构函数
B.析构函数名与类名不同
C.析构函数的定义只能在类体内
D.析构函数可以有一个或多个参数
3.8在下列函数原型中,可以作为类AA构造函数的是(D)。
A.voidAA(int);B.intAA();
C.AA(int)const;D.AA(int)
3.9关于成员函数特征的下述描述中,(A)是错误的。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
3.10不属于成员函数的是(B)。
A.静态成员函数B.友元函数
C.构造函数D.析构函数
3.11已知类A是类B的友元,类B是类C的友元,则(D)。
A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C的成员函数可以访问类B的对象的任何成员
D.类A的成员函数可以访问类B的对象的任何成员
3.12有如下类定义:
classAA
{
inta;
public:
intgetRef()const
{return&a;}//①返回类型为int,return&a为地址
intgetValue()const{returna;}//②
voidset(intn)const{a=n;}//③常函数不能修改成员
friendvoidshow(AAaa)const
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 练习题