您的位置:首页 > 编程语言 > C语言/C++

C++编程实例-友元

2016-01-26 00:00 483 查看
实验10 友元
【实验目的】
通过本实验,掌握友元的概念。
【实验要求】
熟练掌握友元函数的使用方式。
【实验内容】
模拟教师类的对象修改学生类对象的具体数据。
1)类Teacher中的函数s_g(Student &s)是类Student的友元函数。
#include<iostream>
using namespace std;
class Student;
class Teacher{
private:
int i,*pts;
char *name;
public:
Teacher(char *p){ name=p; }
~Teacher(){}
void s_g(Student &s);
};
class Student{
private:
int i,n,x,*ps,*p;
public:
Student(){ ps=new int[100]; n=0; p=ps; }
~Student(){ delete []ps; }
void input();
void display();
friend void Teacher::s_g(Student &s);
};
void Teacher::s_g(Student &s){
cout<<"Teacher "<<name<<" modify student grade!"<<endl;
pts=s.ps;
for(i=0;i<s.n;i++){
if(*pts<60) *pts+=10;
pts++;
}
}
void Student::input(){
cout<<"Please input student grade"<<endl;
cout<<"No."<<n+1<<" grade="; cin>>x;
while(x!=-1){
*(p+n++)=x;
cout<<"No."<<n+1<<" grade="; cin>>x;
}
}
void Student::display(){
cout<<"Student grade"<<endl;
for(i=0;i<n;i++){
cout<<"No."<<i+1;
cout.width(5);
cout<<*(ps+i)<<endl;
}
}
int main(){
Student s;
Teacher t("Zhang");
s.input(); s.display();
t.s_g(s); s.display();
return 0;
}

2)类Teacher中是类Student的友类。
#include<iostream>
using namespace std;
class Student;
class Teacher{
private:
int i,*pts;
char *name;
public:
Teacher(char *p){ name=p; }
~Teacher(){}
void s_g(Student &s);
void s_display(Student &s);
};
class Student{
private:
int i,n,x,*ps,*p;
public:
Student():n(0){ ps=new int[100]; p=ps; }
~Student(){ delete []ps; }
void input();
void display();
friend class Teacher;
};
void Teacher::s_g(Student &s){
cout<<"Teacher "<<name<<" modify student grade!"<<endl;
pts=s.ps;
for(i=0;i<s.n;i++){
if(*pts<60) *pts+=10;
pts++;
}
}
void Teacher::s_display(Student &s){
cout<<"Student grade"<<endl;
pts=s.ps;
for(i=0;i<s.n;i++){
cout<<"No."<<i+1;
cout.width(3);
cout<<*pts<<endl;
pts++;
}
}
void Student::input(){
cout<<"Please input student grade"<<endl;
cout<<"No."<<n+1<<" grade="; cin>>x;
while(x!=-1){
*(p+n++)=x;
cout<<"No."<<n+1<<" grade="; cin>>x;
}
}
void Student::display(){
cout<<"Student grade"<<endl;
for(i=0;i<n;i++){
cout<<"No."<<i+1;
cout.width(5);
cout<<*(ps+i)<<endl;
}
}
int main(){
Student s;
Teacher t("Zhang");
s.input(); s.display();
t.s_g(s); t.s_display(s);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: