内蒙古科技大学C++第四章习题答案讲义.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内蒙古科技大学C第四章习题答案讲义

一、选择题1.标志着C++从面向过程变成面向对象的主要措施是( D )。A.增加了新的运算符 ? ? ? ?B.允许函数重载,设置默认参数C.规定函数声明必须用原型 ?D.引用了类和对象的概念?2.有关类的说法错误的是( D )。A.类是一种用户自定义的数据类型B.只有类中的成员函数才能存取类中的私有数据C.在类中如果不作特殊说明,所指的数据均为私有类型D. 在类中如果不作特殊说明,所指的成员函数均为公有类型?3.有关类和对象的说法错误的是( C )。A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似?4.下列关于构造函数的描述中,错误的是( D )。A.构造函数的函数名与类名相同 ? ? B.构造函数可以重载C.构造函数可以设置默认参数 ? ? ? D.构造函数必须指定类型说明?5.对任意一个类,析构函数的个数最多为( B )个。A.0 ? ?.B.1 ? ? C.2 ? ? D.4?6.通常拷贝构造函数的参数是( D )。?A.某个对象名 ? ? ? ? ? ? ? ?B.某个对象的成员名 ??C.某个对象的指针名 ? ? ? ? ?D.某个对象的引用名?7.已知A是一个类,则执行语句A a;时,将自动调用该类的( B )。A.有参构造函数 ? ? ? ? ? ? ?B.无参构造函数C.拷贝构造函数 ? ? ? ? ? ? ?D.赋值构造函数二、简答题?1.比较C++中的结构(struct)和类(class)的概念的相同和不同之处。?答:相同处:struct和class都可以包含成员函数和数据成员,struct和class都可以继承,struct和class都可以实现多态不同处:struct和class的默认继承访问权限不同,struct默认是public的,class默认是private?2.类中的公有(public)成员和私有(private)成员有什么区别??答:公有权限的数据成员或成员函数可以作为与外界联系的公共接口,由外界访问,称为类的外部接口,外界只能通过公有成员这个借口与类发生联系.共有成员不仅可以由该类的成员函数访问,还可以在类外的程序中通过对象来访问.?私有成员只能通过该类的成员函数或友元函数访问,在类外的程序中不能通过对象来访问,对私有成员来说,来自类外的任何访问都是非法的.通常将类中的数据成员全部或大部分定义为私有的,这是类封装体最隐蔽的部分,实现了类内部数据的有效保护,提高了类封装数据的安全性.在类外,可以通过对象调用共有成员函数,实现对私有成员的访问.?3.构造函数和析构函数的作用是什么??答:构造函数是类中一个特殊的成员函数,他的作用是为对象的数据成员分配存储空间,对数据成员赋初值.析构函数的作用与构造函数正好相反,它用来完成对象被删除前的一些内存释放工作.?4.构造函数是否可以重载?为什么?析构函数呢??答:构造函数可以重载,因为一个类可以定义无参数或者参数个数不同的多个构造函数.析构函数不可以重载,因为析构函数没有参数,不可以像构造函数一样重载.?5.拷贝构造函数的作用是什么?何时调用拷贝构造函数??答:拷贝构造函数的作用是用一个已存在的对象去初始化创建一个同类的新对象.拷贝构造函数一般在三种情况下调用:1.用已存在的对象去初始化创建同类的一个新对象.2.对象作为函数的参数3.函数的返回值为一个对象?6.分析下面的程序,写出运行结果。?程序(1):#include iostream.hclass exap{intx,y;?public:exap(inta,int b)? ? ? {x=a;y=b;}? ? ? exap(exap P){x=P.x; y=P.y;}intset(int x1,int y1){? ? ? ? ? x=x1; y=y1;}intgeta(){ return a; }intgetb(){ return b; }?};?void main()?{exapA(1,2); exap B=A; ? ??coutA=A.geta(),A.getb()endl;coutB=B.geta(),B.getb()endl;B.set(10,20);coutB=B.geta(),B.getb()endl;}运行结果:A=1,2B=1,2B=10,20Press any key to continue????程序(2):#include iostream.h#include string.hclass example1{public:? ? ? ?example1()? ? ? ?{? ? ? ? ? ? ? coutconstructing example1.endl;? ? ? ?}? ? ~example1

文档评论(0)

441113422 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档