日志15
在“学生成绩输入及统计输出”一题中
原来我的思路是这样的
#include<iostream> #include<string> using namespace std; struct Student { string name; int y; int g; int c; }; int main (){ int n; cin>>n; Student *p= new Student [n]; for(int i=0;i<n;i++) { string m; int a,b,c; cin>>m>>a>>b>>c; p[i]={m,a,b,c}; cout<<p[i].name<<" "<<p[i].y+p[i].g+p[i].c<<endl; } return 0; }
原本没觉得有什么问题,但是在学了运算符的重载后,我尝试着对其作出了修改
#include<iostream> #include<string> using namespace std; struct Student { string name; int y; int g; int c; }; istream& operator >>(istream& in,Student &u) { string m; int a,b,c; cin>>m>>a>>b>>c; u={m,a,b,c}; return in; } int main (){ int n; cin>>n; Student *p= new Student [n]; for(int i=0;i<n;i++) { cin>>p[i]; cout<<p[i].name<<" "<<p[i].y+p[i].g+p[i].c<<endl; } return 0; }
我对提取运算符“>>”进行了重载,令其可以直接输入自定义类型“Student”。