构造函数中成员初始值设定项列表的用途是什么
What is the use of member initializers list in constructors?
我试图理解运算符重载的概念,但无法理解该程序中成员初始值设定项列表的使用。它们的真正用途是什么?没有它们我能重写这个程序吗?
#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::initialize_list,而是成员初始值设定项列表。
是的,你可以在不使用它的情况下编写你的构造函数:
Complex(): real(0), imag(0){ }
变为:
Complex(): { real=0; image=0; }
但是我不推荐它。请看这里的原因。
在这种情况下,差异很小,但当要初始化的成员是引用或声明的const
时,差异会变得非常显著。然后,它们不能被分配,并且必须被初始化。
相关文章:
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 处理从列表中删除指向对象的指针的"healthy"方法是什么?
- 当通知迭代器参数初始化为空列表的开头时,list::insert 行为是什么?
- 从列表/向量制作嵌套 for 循环的最佳方法是什么?
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- 为什么BOOST :: HANA :: EXAREMIS ::键入实验功能?类型列表的棘手是什么
- 存储数据列表并自动分配给结构的最佳方法是什么
- 获得给定向量的排列索引列表的最佳方法是什么?
- 我的链接列表反向递归方法的代码的问题是什么?
- 模板参数列表中只有一个类型名称是什么意思?
- 创建指针列表的正确范例是什么
- 从初始值设定项列表中填充boost::multi_array的最佳方法是什么
- 从给定的 IPv6:端口列表中搜索 IPv6:端口组合的最快搜索算法是什么 O(1) 时间一致性
- 链接列表C 类,这两个添加节点实现之间的差异是什么?
- 在括号内包装初始化列表的影响是什么?
- 该功能检测循环链接列表的时间复杂性是什么?
- 成员函数声明的参数列表后面的单个"与"是什么意思
- 在带有转换运算符的初始值设定项的情况下,复制列表初始化的假定行为是什么
- 获取计算列表中的前 n 项的最快方法是什么
- 这个初始化列表是什么意思