您的位置:首页 > 编程语言 > C语言/C++

C++ 重载输入运算符不能访问私有变量

2017-01-17 22:28 405 查看
#include<iostream>
using namespace std;
#include<vector>
#include<string>

class Student
{
public:

Student(void) = default;
Student(int num, string name):
number(num),
name(name)
{ }   ;

void SetNumber(int t)
{
number = t;
}

void SetName(string s)
{
name = s;
}
int getNumber(void)  const      //成员函数
{
return number;
}

string getName(void)  const      //成员函数
{
return name;
}

Student& operator+(Student& item)
{
this->number = this->number +  item.number;
this->name = this->name + item.name;
return *this;
}

friend  ostream& operator<<(ostream &os, const Student & item);
friend  istream& operator>>(istream &os, const Student & item);
friend  bool operator==(const  Student &lhs, const Student &rhs);
private:

int number;
string name;

};

ostream& operator<<(ostream &os, const Student & item)
{
os << item.number<< item.name;
return os;
}

istream& operator>>(istream &is,  Student & item)
{

//	is >> item.number>>item.name;
return is;
}

bool operator==(const  Student &lhs, const Student &rhs)
{
return lhs.name == rhs.name && lhs.number == rhs.number;
}

void main(void)
{
Student s1(1,"huang");
Student s2(2, "pi");

s1 = s1 + s2;
cout << s1 << endl;
bool res =  s1 == s2;
printf("%d", res);

}
在学习C++ Primer的时候发现的问题(如题),网上也没有找到答案,mark下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  运算符重载 C++