第4章习题答案.doc

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

第4章 类与对象 一、选择题 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)的概念的相同和不同之处。 答:C++中的结构体与类的概念相同点:结构体与类都属于用户自定义类型。 C++中的结构体与类的概念不同点:结构体定义没有函数部分,而类定义包含数据部分和函数部分。结构体定义中的数据都是公有权限,而类定义限制了成员的访问权限。 2.类中的公有(public)成员和私有(private)成员有什么区别? 答:类中的共有成员既可以被类的成员函数访问,也可以在类外的程序中通过对象被访问;私有成员只能被该类的成员函数和友元函数来访问。 3.构造函数和析构函数的作用是什么? 答:构造函数的作用是创建对象时为数据成员分配存储空间并赋初值。析构函数的作用是在撤销对象时清除并释放内存空间。 4.构造函数是否可以重载?为什么?析构函数呢? 答:构造函数可以重载,因为对于不同的参数输入需要有相应的构造函数与之匹配;而析构函数不可以重载。 5.拷贝构造函数的作用是什么?何时调用拷贝构造函数? 答:拷贝构造函数的作用是对象之间的复制。拷贝构造函数在以下三种情况下会被复制: (1)用已经存在的对象去初始化创建同类的一个新对象。 (2)对象作为函数的参数(将实参对象拷贝给形参对象)。 (3)函数的返回值为一个对象(将返回对象拷贝给一个临时对象)。 6.分析下面的程序,写出运行结果。 程序(1): #include iostream.h class exap {int x,y; public: exap(int a,int b) { x=a;y=b; } exap(exap P) { x=P.x; y=P.y; } int set(int x1,int y1) { x=x1; y=y1; } int geta() { return a; } int getb() { return b; } }; void main() { exap A(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; } 运行结果: 1,2 1,2 10,20 程序(2): #include iostream.h #include string.h class example1 { public: example1() { coutconstructing example1.endl; } ~example1() { coutdestructing example1.endl; } }; class example2 { public: example2() { coutconstructing example2 .endl; } ~example2() { coutdestructing example2.endl; } }; void main() { example1 stu1; example2 tea1; coutend in maine

文档评论(0)

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

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

1亿VIP精品文档

相关文档