- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章习题答案
第5章 静态成员与友元
一、选择题
1.下述静态数据成员的特性中,(D)是错误的。
A.说明数据成员时前边要加修饰符static
B.静态数据成员要在类体外进行初始化
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 iostream.h
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 iostream.h
#include math.h
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 iostream.h
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;
baom
文档评论(0)