菜鸟c++有错,跪求大神

#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"

函数内部有问题建议你把 输入那个的函数换成其它名称,毕竟你那块不是构造函数,却用着构造函数的方法,重载了

不可能是调用无参数构造函数,应该是调用了有参数的构造函数,又调用了默认的拷贝构造函数