| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:关于运算符重载的问题求助
只看楼主 加入收藏
nuclear_1
Rank: 1
来 自:成都
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-10-6
结帖率:50%
收藏
已结贴  问题点数:5 回复次数:8 
关于运算符重载的问题求助
自己敲代码,是关于运算符重载的,但运行不通过,自己也看不出来问题到底在哪里了,求高手解疑
#include<iostream.h>
class Complex
{
public:
    float r;
    float i;
    Complex(float x=0,float y=0)
    {
    r=x;
    i=y;
    }
};
Complex operator+ (Complex c1,Complex c2)
{
    Complex temp;
    temp.r= c1.r + c2.r;
    temp.i= c1.i + c2,i;
    return temp;
}
void main()
{
Complex complex1(3.34f,4.8f),complex2(12.8f,5.2f);
Complex complex;
complex=operator+ (complex1,complex2);
cout<<complex.r<<'+'<<complex.i<<'i'<<endl;
}
搜索更多相关主题的帖子: Complex complex include 
2013-04-09 16:16
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
[quote]

人生是一场错过 愿你别蹉跎
2013-04-09 16:22
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
[quote]

人生是一场错过 愿你别蹉跎
2013-04-09 16:22
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
没有默认构造函数 被你定义的构造函数覆盖掉了
只要自己定义了构造函数 一般就需要重载默认构造函数 除非你很有把握准确控制所有使用到他的代码
运算符函数要么声明为友元 要么就声明为成员 虚然你的成员全是公有的 这里不会出问题 但这是一个习惯问题啊

人生是一场错过 愿你别蹉跎
2013-04-09 16:24
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
Complex operator+ (Complex c1)
{
    Complex temp;
    temp.r= r + c1.r;
    temp.i= i + c1.i;
    return temp;
}
定义成员函数只需一个参数
2013-04-09 22:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <iostream>
class Complex
{
public:
    double real;
    double image;

    Complex( double r=0, double i=0 ) : real(r), image(i)
    {
    }
};

inline Complex operator+( const Complex& c1, const Complex& c2 )
{
    return Complex( c1.real+c2.real, c1.image+c2.image );
}

std::ostream& operator<<( std::ostream& os, const Complex& c )
{
    return os << c.real << '+' << c.image << 'i';
}

using namespace std;

int main()
{
    Complex complex1(3.34f,4.8f), complex2(12.8f,5.2f);

    Complex complex = complex1 + complex2;
    cout << complex << endl;
   

    return 0;
}
2013-04-10 08:59
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 6楼 rjsp
你看版主写的多严谨多标准
2013-04-10 12:30
zhuxiaoneng
Rank: 4
等 级:业余侠客
威 望:2
帖 子:51
专家分:215
注 册:2013-4-10
收藏
得分:5 
回复 楼主 nuclear_1
楼主的写法基本没有什么问题
Complex operator+ (Complex c1,Complex c2)
{
    Complex temp;
    temp.r= c1.r + c2.r;
    temp.i= c1.i + c2,i;
    return temp;
}

temp.i= c1.i + c2,i;
应该改为
temp.i= c1.i + c2.i;
2013-04-10 12:30
nuclear_1
Rank: 1
来 自:成都
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-10-6
收藏
得分:0 
回复 8楼 zhuxiaoneng
找出问题了,原来是把小数点打成逗号了,粗心了!
2013-04-10 13:21
快速回复:关于运算符重载的问题求助
数据加载中...
 
   



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

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