设计学生信息类,其结构如下:
class stuinfo{
char stuno[20]; //学号
char name[20]; //姓名
int sum; //总成绩
public:
stuinfo(char *st, char *na, int score);
friend ostream & operator<<(ostream &out, stuinfo &obj); //用友元函数,实现流输出重载
};
main函数:
int main( )
{
stuinfo a("1200111","tom",345);
cout << a;
}
其结果为:
学号:1200111
姓名:tom
总成绩:345
代码如下:
using namespace std;
#include<iostream>
class stuinfo{
char stuno[20]; //学号
char name[20]; //姓名
int sum; //总成绩
public:
stuinfo(char *st, char *na, int score);
friend ostream & operator<<(ostream &out, stuinfo &obj); //用友元函数,实现流输出重载
};
stuinfo::stuinfo(char *st,char *na,int score){
int i=0,j=0;
while(*(st+i)!='\0'){
stuno[i]=*(st+i);
i++;
}
stuno[i]='\0'; //最后不要忘记加上字符串结束符,name数组也是
while(*(na+j)!='\0'){
name[j]=*(na+j);
j++;
}
name[j]='\0';
sum=score;
}
ostream & operator<<(ostream &out, stuinfo &obj){
out<<"学号:"<<obj.stuno<<endl<<"姓名:"<<obj.name<<endl<<"总成绩:"<<obj.sum<<endl;
return out;
}
int main()
{
stuinfo a("1200111","tom",345);
cout << a;
}
运行结果:
小结:
重载输入输出流并不难实现,没啥好说的,需要注意到的一点是,在输入完学号和名字后需要再加上一个‘\0’来结束字符串。