| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 488 人关注过本帖
标题:类型转换
只看楼主 加入收藏
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
 问题点数:0 回复次数:5 
类型转换

#include <iostream>
using namespace std;
class Complex
{private:
double real;
double imag;
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex(double r){real=r;imag=0;}
operator double(){return real;}
friend Complex operator+(Complex c1,Complex c2);
void display();
};

Complex operator+(Complex c1,Complex c2)
{ Complex c;
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag;
return c;
}

void Complex::display()
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}

int main()
{Complex c1(23,3.2),c2;
double dl;
dl=c1+1.0;
cout<<dl<<endl;
c2=c1+Complex(3.2);
c2.display();
return 0;
}
/*我想让它既可以用复数的形式输出,又可以做double的形式输出,如何才能实现啊?*/

搜索更多相关主题的帖子: 类型 
2006-06-15 22:27
心动音符
Rank: 1
等 级:禁止访问
威 望:1
帖 子:832
专家分:0
注 册:2005-9-15
收藏
得分:0 
我感觉这两个有冲突,但是冲突在哪呢,如何解决呢
Complex(double r)real=r;imag=0;
operator double()return real;

2006-06-15 22:35
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
hehe,丢人了,看错了~!

[此贴子已经被作者于2006-6-16 0:34:06编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-16 00:06
stylev
Rank: 1
等 级:新手上路
威 望:1
帖 子:136
专家分:0
注 册:2006-5-30
收藏
得分:0 
dl=c1+1.0; //系统是使用类型转换函数operator double() 还是用operator+重载呢? 二义性了....

E-mail/MSN: stylev@
2006-06-16 00:08
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
to stylev:
operator double() 这个函数什么意思啊?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-16 00:37
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

呵呵,理解了~!的确是2义性了~!不知道是先转换成double还是调用+;
所以建议改下:
double dm=c1;
dl=dm+1.0;


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-16 00:49
快速回复:类型转换
数据加载中...
 
   



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

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