初始化结构体的问题,请问这样写有什么作用?应该怎样使用呢?

来源:百度知道 编辑:UC知道 时间:2024/06/04 03:42:28
struct mystruct
{
int a = 0;
float b = 5.26;
mystruct(const mystruct& test)
:a(test.a),b(test.b)

{

}
}

在 C++ 中 struct 本质上是一个轻量级的 class, 也可使用构造函数的, 你的代码中的构造函数是一个复制构造函数, 也就是用同一类的另一个对象来初始化自已:
mystruct s1;
s1.a = 1;
s1.b = 2;
mystruct s2(s1); // 在这里调用复制构造函数

另外, mystruct(const mystruct &test): a(test.a), b(test.b) 的写法是初始化列表, 是用在构造的时候初始成员, 而要是这样:
mystruct(const mystruct &test)
{
a = test.a;
b = test.b;
}
在话, 就是在构造之后, 再赋值 (或者调用 '=' 操作符), 要走两步, 有时候可能会影响效率.
尽量使用初始化列表来初始成员, 在初始列表里除了数组以外, 可以初始任何东西