第六章作业内容(答案)
更新时间:2023-11-11 22:48:01 阅读量: 教育文库 文档下载
第六章作业内容
一、选择题
1.运算符重载时不需要保持的性质是:( A )
A.操作数类型 B.操作数个数 C.优先级 D.结合性
理由:操作数实际上对应的是重载函数的参数,按照重载函数的定义,其构成的条件是参数不同,对于运算符来说,要求其操作数个数必须相同,就是参数个数相同,因此就需要要求参数类型不同,即操作数类型不同。
2.在C++中,要实现动态联编,必须使用(D)调用虚函数。 A.类名 B.派生类指针 C.对象名 D.基类指针 理由:
3. 有如下类定义和变量定义:
#include
int a;
void setX (int x) {a=x;} public:
void showX()
{cout<<\ };
class Y: private X{/*类定义省略*/}; class Z: public X{/*类定义省略*/}; Y objY; Z objZ;
下列语句中正确的是:( D )
A.objY.setX(3); B.objY.showX(); C.objZ.setX(4); D.objZ.showX();
理由:因为类Y,Z对X的继承方式不同,Y对X 是私有继承,Z对X 是公有继承,导致了X类的成员都是Y类的私有成员,而 X类的成员在Z类中的访问方式都和在X类中一样不变。因此,setX、showX都是Y类的私有成员,所以Y类的对象objY不能直接访问setX、showX;setX是Z类的私有成员,showX是Z类的公有成员,所以Z类的对象objZ可以直接访问showX,而不能访问 setX函数; 4. 有如下类定义:
#include
{ int xx; public:
A():xx(0)
{cout<<'A';} A(int n):xx(n) {cout<<'B';} };
class B: public A { int yy; public:
B():yy(0){cout< B(int m,int n):A(m),yy(n) {cout< 下列选项中,输出结果为A0的语句是:( D ) A.B y1(0,0); B.B y2(1); C.B y3(0); D.B y4; 理由:要使输出结果为A0,主要看定义的派生类对象B调用的是哪一个构造函数(基类和派生类),分析构造函数: ? 基类构造函数中,默认构造函数输出“A”,即调用无惨构造函数 ? 派生类构造函数中,没有给基类传递参数的是默认构造函数,且输出“0” 所以,定义对象的语句一定没有参数,即B y4; 5. 己知表达式a++中的“++”是作为友元函数重载的运算符,则与a++等效的运算符函数调用形式为:( C ) A.a .orerator++(1); B.operator++(a); C.operator++(a, 0); D.a.operator++(a, 0 ); 理由:既然是友元函数,a++又是后置++运算符,所以其运算符重载函数有两个参数,一个是当前对象,一个是后置标志,多一个int类型参数。调用的形式是:a++; 或operator++(a,0); 所以,选择(C).其他选项: 6.下列函数 中,不能说明为虚函数的是(C)。 A.私有成员函数 B.公有成员函数 C.构造函数 D.析构函数 理由: 7.以下基类中的成员函数,哪个表示纯虚函数(C)。 A.virtual void vf(int); C.virtual void vf( )=0; 理由: 8.类定义如下。 class A{ }; class B:public A{ public: virtual void func1( ){ } virtual void func2( ){ } B.void vf(int)=0; D.virtual void vf(int){ } }; public: void func1( ) {cout<<”class B func1”< 则下面正确的叙述是(A) A.A::func2( )和B::func1( )都是虚函数 B.A::func2( )和B::func1( )都不是虚函数 C.B::func1( )是虚函数,而A::func2( )不是虚函数 D.B::func1( )不是虚函数,而A::func2( )是虚函数 理由: 9.C++中多态性包括两种多态性:编译时的和运行时的,前者是通 过______来实现的(A) A.函数和运算符的重载B.类继承关系C.虚函数D.抽象类 理由: 10.下列关于虚函数的说明中,正确的是( B)。 A.从虚基类继承的函数都是虚函数 B.虚函数不能是静态成员函数 C.只能通过指针或引用调用虚函数 D.抽象类中的成员函数都是虚函数 理由: 11.下列运算符中,________运算符不能重载为成员函数。C A.赋值运算符= B.函数调用运算符( ) C.输出运算符<< D.后置++ 理由:输出运算符<<的第一个操作数不是当前类的对象,按照C++语言规定,这种情况只能定义为友元运算符重载函数。 12.类B是类A的公有派生类,类A和类B中都定义了虚函数func( ),p是一个指向类A对象的指针,则p->A::func( )将(A)。 A.调用类A中的函数func( ) B.调用类B中的函数func( ) C.根据p所指的对象类型而确定调用类A中或类B中的函数func( ) D.既调用类A中函数,也调用类B中的函数 理由: 二、问答题: 1. 是否使用了虚函数就能实现运行时的多态性?怎样才能实现运行时的多态性? 答:不是。首先要在基类中定义虚函数,并在其派生类中定义重名的虚函数。派生类一定以公有方式继承了基类。实现运行时的多态性时,必须使用基类类型的指针变量或引用,使该指针指向该基类的不同派生类的对象,并通过该指针指向虚函数,才能实现动态的多态性。 2. 为什么析构函数总是要求说明为虚函数? 答:在基类中及其派生类中都动态分配内存空间时,必须把析构函数定义为虚函数,实现撤消对象时的多态性。根据赋值兼容规则可以用基类的指针指向派生类对象,如果由该指针撤销派生类对象,未将析构函数说明为虚函数,则会调用基类的析构函数,使对象释放不完全。因此必须将析构函数说明为虚函数,实现多态性,自动调用派生类析构函数,使得所定义的派生类对象得到完全的释放。 3. 存在这样的抽象类吗?该类定义中并没有定义纯虚函数。 答:存在这样的抽象类,该类继承的基类中定义了纯虚函数,而该类
正在阅读:
第六章作业内容(答案)11-11
四年级口算题100道8587403-08
计算机二级题库03-08
云南大学素质选修课(李浩)《戏曲鉴赏》复习资料考试重点10-27
全国经纬度表(巴中)11-19
统计学复习03-08
社区外国人管理问题探究10-01
2014-2015学年九年级英语人教版新教材课文第一单元译文11-13
2019三年级上册人教版《我们的民族小学》教案精品教育 doc03-08
人教版小学一年级数学下册应用题集锦04-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 作业
- 答案
- 内容
- 历年四川师范大学文理学院录取分数线
- 英语德语汽车类词汇中文对照 - 图文
- 檩条暗藏型复合板施工方案
- 山东省烟台市2016-2017学年高二上学期期末考试数学(理)试题Word版含答案 - 图文
- 名词解释与简答题
- 2010-2011学年上海市静安区八年级(下)期末数学试
- 逻辑运算和判断
- 计算机专业毕业设计(物流信息管理平台的探索)
- 东明学校小学部生豆芽活动方案
- 新目标九年级英语期末复习内容和知识要点
- 地下停车场施工组织设计
- 9.4施工测量记录
- 中国食品干燥剂行业发展研究报告 - 图文
- 象山县第十一届小学(幼儿园)“教坛新秀”评选推荐表
- 普通物理上
- 解析国产电影纷纷涉足西部片类型 - 图文
- 操作系统试题A卷
- 主斜井皮带安装安全技术措施
- 感恩于心责任于行演讲稿
- 中国共产党大事记