C++ 构造函数中成员初始值设定项列表的用途是什么?

C++ 构造函数中成员初始值设定项列表的用途是什么?,c++,member-initialization,C++,Member Initialization,我试图理解运算符重载的概念,但不理解在这个程序中使用成员初始值设定项列表。它们的真正用途是什么?没有它们我能重写这个程序吗 #include <iostream> using namespace std; class Complex { private: float real; float imag; public: Complex(): real(0), imag(0){ } void input() { cout<&l

我试图理解运算符重载的概念,但不理解在这个程序中使用成员初始值设定项列表。它们的真正用途是什么?没有它们我能重写这个程序吗

#include <iostream>
using namespace std;
class Complex
{
    private:
  float real;
  float imag;
    public:
   Complex(): real(0), imag(0){ }
   void input()
   {
       cout<<"Enter real and imaginary parts respectively: ";
       cin>>real;
       cin>>imag;
   }
   Complex operator - (Complex c2)    /* Operator Function */
   {
       Complex temp;
       temp.real=real-c2.real;
       temp.imag=imag-c2.imag;
       return temp;
   }
   void output()
   {
       if(imag<0)
           cout<<"Output Complex number: "<<real<<imag<<"i";
       else
           cout<<"Output Complex number: "<<real<<"+"<<imag<<"i";
   }
};
int main()
{
Complex c1, c2, result;
cout<<"Enter first complex number:\n";
c1.input();
cout<<"Enter second complex number:\n";
c2.input();
result=c1-c2; 
result.output();
return 0;
#包括
使用名称空间std;
阶级情结
{
私人:
浮动真实;
浮动图像;
公众:
复数():实(0),imag(0){}
无效输入()
{
库特尔;
cin>>imag;
}
复算子-(复c2)/*算子函数*/
{
复合温度;
实际温度=real-c2.real;
温度imag=imag-c2.imag;
返回温度;
}
无效输出()
{

如果(imag我觉得有点混乱。你不是在说,而是在说

是的,您可以不使用构造函数编写构造函数:

Complex(): real(0), imag(0){ }
变成:

Complex(): { real=0; image=0; }

但是我不推荐。看。

我觉得有点混乱。你不是在说,而是在说

是的,您可以不使用构造函数编写构造函数:

Complex(): real(0), imag(0){ }
变成:

Complex(): { real=0; image=0; }

但是我不推荐。看。

我觉得有点混乱。你不是在说,而是在说

是的,您可以不使用构造函数编写构造函数:

Complex(): real(0), imag(0){ }
变成:

Complex(): { real=0; image=0; }

但是我不推荐。看。

我觉得有点混乱。你不是在说,而是在说

是的,您可以不使用构造函数编写构造函数:

Complex(): real(0), imag(0){ }
变成:

Complex(): { real=0; image=0; }


但是我不建议这样做。请参见。

在这种情况下,差异很小,但当要初始化的成员是引用或声明的
常量时,差异变得非常显著。然后,它们无法分配,必须进行初始化。

在这种情况下,差异很小,但当要初始化的成员是b时,差异变得非常显著e initialized是引用或声明的
const
。那么它们就不能被分配,必须被初始化。

在这种情况下,差异很小,但是当要初始化的成员是引用或声明的
const
时,差异变得非常显著。然后它们就不能被分配,必须被初始化。

在这种情况下,e很小,但当要初始化的成员是引用或声明的
const
时,e变得非常重要。然后它们就不能被赋值,必须被初始化。

NB:可以,但如果可以避免的话,就不应该这样做,因为随后会执行默认的初始化,然后再进行赋值。@coincoin我说的是这里有成员初始值设定项列表哦,好的!如果我们不在这里使用初始值设定项列表,作业也会在这里。事实上,感谢您的回答,我对所有这些类型的概念都是陌生的。编辑问题是为了澄清这是关于成员初始化的,而不是关于
std::initializer\u list
,重载是不相关的。注意:您可以,但我不应该这样做f您可以避免它,因为您随后会执行默认初始化,然后执行赋值。@coincoin我在这里谈论的是成员初始值设定项列表哦,好的!如果我们不在这里使用初始值设定项列表,也会有赋值项。实际上,感谢您的回答,我对所有这些类型的概念都是新手。编辑问题以澄清这是about成员初始化,而不是
std::initializer\u list
,重载是不相关的。注意:如果可以避免,您可以,但不应该这样做,因为您随后会执行默认初始化,然后执行赋值。@coincoin我在这里谈论的是成员初始化器列表哦,好的!如果我们不使用initialize,也会有赋值r在这里列出。事实上,感谢您的回答,我对所有这些类型的概念都是陌生的。问题经过编辑以澄清它是关于成员初始化的,而不是关于
std::initializer\u list
,重载是不相关的。注意:如果可以避免的话,您可以,但不应该,因为您随后会执行默认初始化,然后执行赋值。@co我在这里谈论的是成员初始值设定项列表哦,好吧!如果我们不在这里使用初始值设定项列表,作业也会在这里。事实上,我对所有这些类型的概念都很陌生,谢谢你的回答。问题经过编辑以澄清这是关于成员初始化的,而不是关于
std::initializer\u list
,重载是不相关的初始值设定项列表与运算符重载无关。如果您告诉我们为什么会出现这种情况,也许其他人可以帮助澄清。顺便说一句,您有一个
“-”
负片图像的输出缺失初始化列表与运算符重载无关。如果您告诉我们您认为会出现这种情况的原因,也许其他人可以帮助澄清。顺便说一句,您有一个
“-”
负片图像的输出缺失初始化列表与运算符重载无关。如果您告诉我们您认为会出现这种情况的原因,也许其他人可以帮助澄清。顺便说一句,您有一个
“-”
负片图像的输出缺失初始化列表与运算符重载无关。如果您告诉我们为什么您认为会出现这种情况,也许其他人可以帮助澄清。顺便说一句,负片图像的输出缺失一个
“-”