这块知识盲区,补上,以便忘记时翻阅
重载输入运算符 >>
先了解两个小点:
- 输入和输出运算符只能用友元函数重载。
- 友元函数:指某些虽然不是类成员却能够访问类的所有成员的函数。
上示例代码
#include<iostream>
using namespace std;
class Student {
public:
Student(int math = 0, int english = 0, int total = 0)
: _math(math), _english(english), _total(total) {}
public:
int _math, _english, _total;
friend istream& operator>>(istream& in, Student& s); // 输入运算符只能用友元函数重载。
};
istream& operator>>(istream& in, Student& s)
{
in >> s._math >> s._english; // 输入两个参数 _math 和 _english
s._total = s._math + s._english; // _total 为两数之和
return in;
}
int main(int argc, char* argv[])
{
Student stu(10,20,30);
cin >> stu; // 该步骤输入两个值_math 和 _english
cout << "stu._total = " << stu._total << endl; // 此处输出的 _total 为重载处理过的值
return 0;
}
如输入:
10
50
输出:
60
结束:
分享也是自己对问题再次加深理解的方式,可能不全面,但绝对有用,后面将不断完善~