关于输入运算符重载的问题!

ouyangdongfang 2005-04-29 10:37:44
我写了一个类:fraction 其构造函数为: fraction::fraction(char *a);
然后我又写了一个输入符重载函数,并且为类fraction的友元函数:
friend fraction& operator >>(istream os, fraction &fract); //输入运算符

函数体为:
fraction& operator >>(istream &is, char *a){
fraction f(a); return f; }
如果我将返回类型改成: istream的话就不能直接在主函数里面进行加减啦,可是这样子又不能连输入比如这样: cin>>s1>>s2;
还有就是编译器一直给我报错:
warning C4172: returning address of local variable or temporary
为什么会有这个警告啊?
...全文
174 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
llmsn 2005-04-29
  • 打赏
  • 举报
回复
是啊,同意楼上.
wohow 2005-04-29
  • 打赏
  • 举报
回复
返回类型应该是fraction &,至于那个警告,你的函数返回局部变量的引用,函数退出时局部变量被销毁,引用就没有了,当然警告,如果运行还可能出严重错误呢。记住,永远不要返回局部变量的地址和引用。
DCFSH 2005-04-29
  • 打赏
  • 举报
回复
现在提不了问,我也有一个运算符重载的问题:
Class A
{
public:
friend ostream& operator<<( ostream &os, A& mya );
private:
string s;
}

ostream& operator<<( ostream &os, A& mya )
{
// 这里编译出错:Can't access private member of class A,但是 我已经声明了friend啊
mya.s = "";
}

CloudOfFly 2005-04-29
  • 打赏
  • 举报
回复
一楼说得
很对阿
qhfu 2005-04-29
  • 打赏
  • 举报
回复
istream& operator >>(istream &is, char *a){
fraction f(a);
is >> ;//这里输入你要输入的 fraction 类的一些东西。
return is;
}

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧