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;
}
【实验目的】
通过本实验,掌握友元的概念。
【实验要求】
熟练掌握友元函数的使用方式。
【实验内容】
模拟教师类的对象修改学生类对象的具体数据。
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;
}
相关文章推荐
- C++编程实例-分支结构
- C++编程实例-I/O流
- C++ 对象与指针
- C++函数重载
- C++编程实例-函数
- C++编程实例-多重循环结构
- C++ 面向过程与面向对象的区别
- C++中const与static在面向过程代码中的异同
- C++标准编程:虚函数与内联
- C++ 实例导航
- C++动态创建二维数组
- 2012年第三届蓝桥杯C/C++程序设计本科B组省赛 夺冠概率(编程大题)
- C++:七种qsort排序方法
- C++编程实例-多态(一)
- C++构造函数的幕后工作
- C++直接操纵虚函数表方法
- C/C++ qsort()快速排序的用法
- C++动态建立矩阵及矩阵相乘
- C++编程实例-运算符重载
- C++ using namespace std