#include
class fushu
{
double r,s;
public:
fushu(double x,double y)
{
r=x;
s=y;
}
fushu()
{
double x,double y;
printf("请分别输入实数和虚数的值:");
scanf("%lf%lf",&x,&y);
r=x;
s=y;
}
fushu operator+(fushu &a)
{
fushu t;
t.r=r+a.r;
t.s=s+a.s;
return t;
}
fushu operator-(fushu &a)
{
fushu t;
t.r=r-a.r;
t.s=s-a.s;
return t;
}
void print()
{
printf("%lf+%lfi\n",r,s);
}
};
int main()
{
fushu F1,F2,F3(0.0,0.0),F4(0.0,0.0);
F3=F1+F2;
F4=F1-F2;
F3.print();
F4.print();
return 0;
}
为什么我这个函数F3和F4对象调用的也是默认的构造函数?
怎样才能让它调用那个有参的构造函数
fushu operator-(fushu &a)
{
fushu t;
。。。
}
你在这又声明了一个对象,可不得重新构造嘛
怎么感觉这代码像java
你可以尝试着写成fushu F1,F2;
fushu F3(0.0,0.0), F4(0.0,0.0); 试试
其实F3、F4并没有调用默认构造函数,调用默认构造函数的,是运算符重载“fushu operator-(fushu &a)”里面的"fushu t"
函数内部有问题建议你把 输入那个的函数换成其它名称,毕竟你那块不是构造函数,却用着构造函数的方法,重载了
不可能是调用无参数构造函数,应该是调用了有参数的构造函数,又调用了默认的拷贝构造函数