c++重载>>必须要用友元函数?

c++重载>>必须要用友元函数?重载运算符有没有一些规则呢?... c++重载>>必须要用友元函数?
重载运算符有没有一些规则呢?
展开
 我来答
xoaxa
推荐于2016-11-24 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3502万
展开全部
重载>>和<<通常都用友元函数,理由很简单。
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;
追问
能否用重载成员函数的方法来重载一下>>呢??
追答
重载运算符后,再在该类中重载,没见过,我想象不来。
IT孤鹜
2014-05-04 · TA获得超过4198个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3598万
展开全部
没有必须这说法,如果不用友元,你还要用一个实例对象去调用,感觉很难看

一般的符号都可以重载
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式