注册 登录
编程论坛 C++教室

[求助]转换构造函数能实现这个功能么

hitlfy 发布于 2006-12-19 07:58, 521 次点击
我在VC++6.0编译系统下运行这个C++程序,显示在c3=c1+2.5这条语句有错误,但我已经定义
转换构造函数了,2.5应该转为Complex(2.5),请大侠指点,不胜感激
#include <iostream.h>
class Complex
{
public:
Complex()
{
real=0;
image=0;
}
Complex(double r)
{
real=r;
image=0;
}
Complex(double r,double i)
{
real=r;
image=i;
}
friend Complex operator + (Complex &c1,Complex &c2);
void display();
private:
double real;
double image;
};
void Complex::display()
{
cout<<real<<"i"<<image<<endl;
}
Complex operator + (Complex &c1,Complex &c2)
{
return Complex(c1.real+c2.real,c1.image+c2.image);
}
int main()
{
Complex c1(3,4),c2(4,8),c3;
c3=c1+2.5;
c3.display();
return 0;
}
4 回复
#2
lrgsz2006-12-19 10:31
int main()
{
Complex c1(3,4),c2(4,8),c3;
c3=c1+2.5;//这里你是用类Complex C1和2.5相加 问你:你+重载的内容是什么?你自己就明白了!
c3.display();
return 0;
}
#3
song42006-12-19 12:22
#include <iostream.h>
class Complex
{
public:
Complex()
{
real=0;
image=0;
}
Complex(double r)
{
real=r;
image=0;
}
Complex(double r,double i)
{
real=r;
image=i;
}
friend Complex operator + (Complex c1,Complex c2);
void display();
private:
double real;
double image;
};
void Complex::display()
{
cout<<real<<endl<<image<<endl;
}
Complex operator + (Complex c1,Complex c2)
{
return Complex(c1.real+c2.real,c1.image+c2.image);
}
int main()
{
Complex c1(3,4),c2(4,8),c3;
c3=c1+2.5;
c3.display();
return 0;
}
用了引用,它就没有了转换
直接找类型
#4
tancui2006-12-19 13:13
受教了
#5
hitlfy2006-12-20 07:16

谢谢大狭,这个知识点我还真的不知道

1