第5章习题答案.doc_第1页
第5章习题答案.doc_第2页
第5章习题答案.doc_第3页
第5章习题答案.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 静态成员与友元一、选择题1.下述静态数据成员的特性中,(D)是错误的。A.说明数据成员时前边要加修饰符staticB.静态数据成员要在类体外进行初始化C.引用静态数据成员时,要在静态数据成员名前加“类名”和作用域运算符 D.静态数据成员不是所有对象所共有的。2.关于友元,下面说法中正确的是(A)。A.一个类的成员函数可以说明为另一个类的友元B.当一个类说明为另一个类的友元时,这个类中的第一个成员可以访问另一个类C.如果类A是类B的友元,类B又是类C的友元,则类A是类C的友元D.如果类A是类B的友元,类B也是类A的友元二、简答题1.请解释静态成员与普通成员的不同。答:静态成员不是属于某个对象的,它是由某个类的所有对象所共有,每个类只有一个静态数据成员拷贝,它的值对每个对象都是一样的。而普通成员为某个对象所有,不同的对象拥有不同数值的普通成员。2.什么是友元?什么是友元类。答:友元可以是一个函数,也可以是一个类,分别称为友元函数和友元类。当一个类作为另一个类的友元时,友元类中的所有成员函数都是另一个类的友元函数。友元函数不是当前类的成员函数,但它可以访问该类的所有对象的成员,包括公有成员,私有成员和保护成员。三、编程题1编写一个程序,设计一个类score用于统计一个班的学生成绩,要求使用一个静态数据成员sum存储总分和一个静态成员函数retsum返回总分值。#include class score public: score(int s) score_one=s; sum+=s;static int retsum(); private: static int sum; int score_one;int score:sum=0;int score:retsum() return sum;void main() score s1(60),s2(70),s3(80); cout”sum=”score:retsum()endl;2.编写一个程序,设计一个类Trig,给定三角形的三条边长x,y,z,包含一个友元函数计算两个三角形面积之和。#include #include class Trig public: Trig(int a=0,int b=0,int c=0) x=a; y=b; z=c;friend float areasum(Trig t1,Trig t2) return(t1.area()+t2.area();float area() float s,area;s=(x+y+z)/2.0;area=sqrt(s*(s-x)*(s-y)*(s-z);return area;private: int x,y,z;void main() float sum;Trig t1(3,4,5),t2(5,6,7) ;sum=areasum(t1,t2) ;cout两三角形面积和为:sumendl; 3编写一个程序,输入几个学生的姓名、数学、物理成绩,然后按总分从高到低排序。要求定义一个student类,用友元实现排序。4编写一个有关汽车连锁销售的程序,其中有两个类:一个是北京类beijing,另一个是上海类shanghai。类中有3项私有数据,分别是奥迪汽车的个数,奔驰汽车的个数,宝马汽车的个数,每一个类分别有自己的友元函数来计算并显示北京或上海的汽车销售总数(3项的和),两个类还共用一个count(),用来计算北京和上海总共销售多少辆汽车并输出。#include class beijing;class shanghai public: shanghai(int ao,int be,int ba) aodi=ao;benchi=be;baoma=ba;total=aodi+benchi+baoma;int get_total()return total;friend int count (beijing b,shanghai s);private: int aodi,benchi,baoma,total;class beijing public:beijing(int ao,int be,int ba)aodi=ao;benchi=be;baoma=ba;total=aodi+benchi+baoma;int get_total()return total;friend int count(beijing b,shanghai s);private: int aodi,benchi,baoma,total;int count(beijing b,shanghai s) return b.total+s.total;void main() shanghai s(10,20,30);beijing b(20,30,40);cout”the total count of shanghai is: ”s.get_total()endl;cout”the tot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论