2个回答
展开全部
重载>>和<<通常都用友元函数,理由很简单。
1、如何使用>>或<<呢? 假如有类CLS cls,该类有私有数据成员int a。现在要读入数据a,如何调用呢?
cin >> cls.a; //显然不行,因为不能存取私有成员。
cin >> clas; // 不行,编译程序会说没有>>的重载
2、使用友元函数时,就可以存取私有成员了。
istream &operator>>(istream &in, CLS &cls) {
in >> cls.a;
// ......
return in;
}
调用方法: cin >> cls;
之所以返回istream的引用,是为了可以连续输入cls的值值,如
CLS clsa,clsb;
cin >> clsa >> clsb;
1、如何使用>>或<<呢? 假如有类CLS cls,该类有私有数据成员int a。现在要读入数据a,如何调用呢?
cin >> cls.a; //显然不行,因为不能存取私有成员。
cin >> clas; // 不行,编译程序会说没有>>的重载
2、使用友元函数时,就可以存取私有成员了。
istream &operator>>(istream &in, CLS &cls) {
in >> cls.a;
// ......
return in;
}
调用方法: cin >> cls;
之所以返回istream的引用,是为了可以连续输入cls的值值,如
CLS clsa,clsb;
cin >> clsa >> clsb;
追问
能否用重载成员函数的方法来重载一下>>呢??
追答
重载运算符后,再在该类中重载,没见过,我想象不来。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询