gpt4 book ai didi

c++ - 为什么我们需要在参数化构造函数中预先初始化参数?

转载 作者:行者123 更新时间:2023-12-01 14:57:00 26 4
gpt4 key购买 nike

我正在声明一个用于添加复数的类comp,而在add()函数中声明第三个comp对象时会弹出错误
错误:没有匹配的函数可以调用'comp::comp()'
下面给出的代码绝对可以正常工作

 class comp
{
float real;
float img;

public:
comp()
{
real=img=0;
}

comp(float a,float b)
{
real=a;
img=b;
}

void display()
{
cout<<real<<"+"<<img<<"i"<<endl;
}

friend comp add(comp, comp);
};

现在,在代码打击中,我已经注释了Default构造函数
这产生一个错误
    class comp
{
float real;
float img;

public:
/*comp()
{
real=img=0;
}*/

comp(float a,float b)
{
real=a;
img=b;
}

void display()
{
cout<<real<<"+"<<img<<"i"<<endl;
}

friend comp add(comp, comp);
};

在下面的代码中,我已经在参数化构造函数中初始化了参数
这也很好用
    class comp
{
float real;
float img;

public:

comp(float a=0,float b=0)
{
real=a;
img=b;
}

void display()
{
cout<<real<<"+"<<img<<"i"<<endl;
}

friend comp add(comp, comp);
};
我在下面粘贴add()函数的代码
    comp add(comp c1, comp c2)
{
comp c3; //*The error pops up at this declaration*
c3.real=c1.real+c2.real;
c3.img=c1.img+c2.img;
return c3;
}

最佳答案

您不是在“初始化参数”,而是在声明具有默认参数值的函数。这样就可以在不显式传递任何内容的情况下调用该函数,因此可以在不带参数的情况下进行调用。

关于c++ - 为什么我们需要在参数化构造函数中预先初始化参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63835221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com