| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 407 人关注过本帖
标题:初学orz用成员函数重载前增操作符怎么返回值?运行结果很奇怪。。
只看楼主 加入收藏
karen14
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-21
收藏
 问题点数:0 回复次数:4 
初学orz用成员函数重载前增操作符怎么返回值?运行结果很奇怪。。
#include<iostream>
using namespace std;
class xs
{
private:
    double re,im;
public:
     xs(double r,double i);
    void print()const;
    xs operator*(const xs& b);
    xs& operator++();
    xs operator++(int);
};
xs:: xs(double r,double i)
    {
        re=r;
        im=i;
    }
void xs::print()const
    {
        cout<<re<<"+"<<im<<"i"<<endl;
    }
xs xs::operator*(const xs& b)
    {
        xs t(re*b.re-im*b.im,re*b.im+im*b.re);
        return t;
    }
xs& xs::operator++()
    {
        ++re;
        ++im;
        xs a(re,im);
        return a;
    }//这个地方运行结果出问题了
xs xs::operator++(int)
    {
        xs ori(re,im);
        ++re;
        ++im;
        return ori;

    }
int main()
{   xs z1(1,2),z2(3,4);
    (z1*z2).print();
    (z1++).print();
    z1.print();
    (++z1).print();
    system("pause");
    return 0;
}
运行结果:
-5+10i
1+2i
2+3i
-9.25596e+061+-9.25596e+061i//这个结果。。。
搜索更多相关主题的帖子: private include public double return 
2014-12-21 16:13
karen14
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-21
收藏
得分:0 
啊哦,用对象指针可以了。
2014-12-21 16:31
karen14
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-21
收藏
得分:0 
回复 楼主 karen14
xs& xs::operator++()
    {
        ++re;
        ++im;
        return *this;
    }
xs xs::operator++(int)
    {
        xs ori(*this);
        ++(*this);
        return ori;

    }
2014-12-21 16:36
karen14
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-12-21
收藏
得分:0 
一不小心自问自答了。。。那个奇怪的运行结果是为什么呢?
2014-12-21 16:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 4楼 karen14
你返回一个局部变量的引用,属于未定义行为
未定义行为就不要谈什么结果,无论奇怪不奇怪。
2014-12-22 09:54
快速回复:初学orz用成员函数重载前增操作符怎么返回值?运行结果很奇怪。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016808 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved