qq_38765206
2017-05-17 12:34
采纳率: 50%
浏览 918

菜鸟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对象调用的也是默认的构造函数?
怎样才能让它调用那个有参的构造函数

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • Mika_Gu 2017-05-17 14:27
    已采纳

    fushu operator-(fushu &a)
    {
    fushu t;
    。。。
    }
    你在这又声明了一个对象,可不得重新构造嘛

    点赞 评论
  • _Kenneth 2017-05-17 12:35

    怎么感觉这代码像java

    点赞 评论
  • 游穆族人 2017-05-17 12:38

    你可以尝试着写成fushu F1,F2;
    fushu F3(0.0,0.0), F4(0.0,0.0); 试试

    点赞 评论
  • stonerebel 2017-05-17 12:57

    其实F3、F4并没有调用默认构造函数,调用默认构造函数的,是运算符重载“fushu operator-(fushu &a)”里面的"fushu t"

    点赞 评论
  • The_best_man 2017-05-17 15:57

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

    点赞 评论
  • terminato2 2017-05-18 00:45

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

    点赞 评论

相关推荐 更多相似问题