C++编程实例-友元

实验10友元

【实验目的】

通过本实验,掌握友元的概念。

【实验要求】

熟练掌握友元函数的使用方式。

【实验内容】

模拟教师类的对象修改学生类对象的具体数据。

1)类Teacher中的函数s_g(Student&s)是类Student的友元函数。

#include<iostream>

usingnamespacestd;

classStudent;

classTeacher{

private:

inti,*pts;

char*name;

public:

Teacher(char*p){name=p;}

~Teacher(){}

voids_g(Student&s);

};

classStudent{

private:

inti,n,x,*ps,*p;

public:

Student(){ps=newint[100];n=0;p=ps;}

~Student(){delete[]ps;}

voidinput();

voiddisplay();

friendvoidTeacher::s_g(Student&s);

};

voidTeacher::s_g(Student&s){

cout<<"Teacher"<<name<<"modifystudentgrade!"<<endl;

pts=s.ps;

for(i=0;i<s.n;i++){

if(*pts<60)*pts+=10;

pts++;

}

}

voidStudent::input(){

cout<<"Pleaseinputstudentgrade"<<endl;

cout<<"No."<<n+1<<"grade=";cin>>x;

while(x!=-1){

*(p+n++)=x;

cout<<"No."<<n+1<<"grade=";cin>>x;

}

}

voidStudent::display(){

cout<<"Studentgrade"<<endl;

for(i=0;i<n;i++){

cout<<"No."<<i+1;

cout.width(5);

cout<<*(ps+i)<<endl;

}

}

intmain(){

Students;

Teachert("Zhang");

s.input();s.display();

t.s_g(s);s.display();

return0;

}

2)类Teacher中是类Student的友类。

#include<iostream>

usingnamespacestd;

classStudent;

classTeacher{

private:

inti,*pts;

char*name;

public:

Teacher(char*p){name=p;}

~Teacher(){}

voids_g(Student&s);

voids_display(Student&s);

};

classStudent{

private:

inti,n,x,*ps,*p;

public:

Student():n(0){ps=newint[100];p=ps;}

~Student(){delete[]ps;}

voidinput();

voiddisplay();

friendclassTeacher;

};

voidTeacher::s_g(Student&s){

cout<<"Teacher"<<name<<"modifystudentgrade!"<<endl;

pts=s.ps;

for(i=0;i<s.n;i++){

if(*pts<60)*pts+=10;

pts++;

}

}

voidTeacher::s_display(Student&s){

cout<<"Studentgrade"<<endl;

pts=s.ps;

for(i=0;i<s.n;i++){

cout<<"No."<<i+1;

cout.width(3);

cout<<*pts<<endl;

pts++;

}

}

voidStudent::input(){

cout<<"Pleaseinputstudentgrade"<<endl;

cout<<"No."<<n+1<<"grade=";cin>>x;

while(x!=-1){

*(p+n++)=x;

cout<<"No."<<n+1<<"grade=";cin>>x;

}

}

voidStudent::display(){

cout<<"Studentgrade"<<endl;

for(i=0;i<n;i++){

cout<<"No."<<i+1;

cout.width(5);

cout<<*(ps+i)<<endl;

}

}

intmain(){

Students;

Teachert("Zhang");

s.input();s.display();

t.s_g(s);t.s_display(s);

return0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值