C++友元习题

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

01.分析以下程序的执行结果

#include

class Sample

{

int n;

public:

Sample(int i){n=i;}

friend int add(Sample &s1,Sample &s2);

};

int add(Sample &s1,Sample &s2)

{

return s1.n+s2.n;

}

void main()

{

Sample s1(10),s2(20);

cout<

}

解:

本题说明了友元函数的使用方法。add()是一个友元函数,它返回两个引用对象的n值之和。

所以输出为:30

注意:友元函数不是类的成元函数

----------------------------------------------------

02.分析以下程序的执行结果

#include

class B;

class A

{

int i;

public:

int set(B&);

int get(){return i;}

A(int x){i=x;}

};

class B

{

int i;

public:

B(int x){i=x;}

friend A;

int A::set(B &b) // 由于使用了类B的定义,故本函数的定义应放在类B定义之后

{

return i=b.i;

}

void main()

{

A a(1);

B b(2);

cout<

a.set(b);

cout<

}

解:

本题说明友元类的使用方法。这里将类A设置为类B的友元类,因此,类A的所有成员函数均为类B 的友元函数。通过调用a.set(b)将b对象的i值赋给a对象的i值。

所以输出为:1,2

-------------------------------------------------

03.有一个学生类student,包括学生姓名、成绩,设计一个友元函数,比较两个学生成绩的高低,并求出最高分和最低分的学生。

解:

#include

#include

class student

{

char name[10];

int deg;

public:

student(char na[],int d)

{

strcpy(name,na);

deg=d;

}

char *getname(){ return name;}

friend int compare(student &s1,student &s2)

{

if(s1.deg>s2.deg)

return 1;

else if(s1.deg==s2.deg)

return 0;

else return -1;

};

void main()

{

student st[]={student("王华",78),student("李明",92),student("张伟",62),student("孙强",88)};

int i,min=0,max=0;

for(i=1;i<4;i++)

{

if(compare(st[max],st[i])==-1)

max=i;

else if(compare(st[i],st[min])==1)

min=i;

}

cout<<"输出结果:"<

cout<<" 最高分:"<

cout<<" 最低分:"<

}

本程序的执行结果如下:

输出结果:

最高分者:李明

最低分者:张伟

-------------------------------------------------------------

04.有一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成绩对应的等级:大于等于90:优;80~90:良;70~79:中;60!69:及格;小于60:不及格。

解:

#include

#include

#include

class student

{

char name[10];

int deg;

char level[7];

public:

student(char na[],int d)

{

strcpy(name,na);

deg=d;

}

char *getname(){ return name;}

friend void trans(student &s)

相关文档
最新文档