日志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”。
小天才公司福利 1159人发布
查看5道真题和解析