您好,欢迎访问三七文档
第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返回总分值。#includeiostream.hclassscore{public:score(ints){score_one=s;sum+=s;}staticintretsum();private:staticintsum;intscore_one;};intscore::sum=0;intscore::retsum(){returnsum;}voidmain()\{scores1(60),s2(70),s3(80);cout”sum=”score::retsum()endl;}2.编写一个程序,设计一个类Trig,给定三角形的三条边长x,y,z,包含一个友元函数计算两个三角形面积之和。#includeiostream.h#includemath.hclassTrig{public:Trig(inta=0,intb=0,intc=0){x=a;y=b;z=c;}friendfloatareasum(Trigt1,Trigt2){return(t1.area()+t2.area());}floatarea(){floats,area;s=(x+y+z)/2.0;area=sqrt(s*(s-x)*(s-y)*(s-z));returnarea;}private:intx,y,z;};voidmain(){floatsum;Trigt1(3,4,5),t2(5,6,7);sum=areasum(t1,t2);cout两三角形面积和为:sumendl;}3.编写一个程序,输入几个学生的姓名、数学、物理成绩,然后按总分从高到低排序。要求定义一个student类,用友元实现排序。4.编写一个有关汽车连锁销售的程序,其中有两个类:一个是北京类beijing,另一个是上海类shanghai。类中有3项私有数据,分别是奥迪汽车的个数,奔驰汽车的个数,宝马汽车的个数,每一个类分别有自己的友元函数来计算并显示北京或上海的汽车销售总数(3项的和),两个类还共用一个count(),用来计算北京和上海总共销售多少辆汽车并输出。#includeiostream.hclassbeijing;classshanghai{public:shanghai(intao,intbe,intba){aodi=ao;benchi=be;baoma=ba;total=aodi+benchi+baoma;}intget_total(){returntotal;}friendintcount(beijingb,shanghais);private:intaodi,benchi,baoma,total;};classbeijing{public:beijing(intao,intbe,intba){aodi=ao;benchi=be;baoma=ba;total=aodi+benchi+baoma;}intget_total(){returntotal;}friendintcount(beijingb,shanghais);private:intaodi,benchi,baoma,total;};intcount(beijingb,shanghais){returnb.total+s.total;}voidmain(){shanghais(10,20,30);beijingb(20,30,40);cout”thetotalcountofshanghaiis:”s.get_total()endl;cout”thetotalcountofbeijingis:”b.get_total()endl;cout”thetotalcountofshanghaiandbeijingis:”count(b,s)endl;}
本文标题:第5章习题答案
链接地址:https://www.777doc.com/doc-2110323 .html