C++ 我想开始使用C++;内联初始化,有什么不好的情况吗?
如果我有这样一个C++ 我想开始使用C++;内联初始化,有什么不好的情况吗?,c++,c++11,C++,C++11,如果我有这样一个struct: struct A { int i; double d; const bool b; }; 我这样做:A然后我得到非值初始化对象,即,I可以是6,d可以是其他东西b可以是true。为了避免这种情况,我想做以下几点: struct A { int i = 0; double d = 0.0; const bool b = false; }; 使用这种方法作为经验法则有什么不好的地方吗?也许你知道一个情况,当这是不
struct
:
struct A
{
int i;
double d;
const bool b;
};
我这样做:A
然后我得到非值初始化对象,即,I
可以是6
,d
可以是其他东西b
可以是true
。为了避免这种情况,我想做以下几点:
struct A
{
int i = 0;
double d = 0.0;
const bool b = false;
};
使用这种方法作为经验法则有什么不好的地方吗?也许你知道一个情况,当这是不可取的吗
struct A
{
int i = 0;
double d = 0.0;
const bool b = false;
};
是正确和简洁的
正确且简洁。您可以使用构造函数中的初始化列表来完成
struct A
{
int i;
double d;
const bool b;
A(int i, double d, bool b) : i(i), d(d), b(b){}
};
您可以通过在构造函数中使用初始化列表来完成
struct A
{
int i;
double d;
const bool b;
A(int i, double d, bool b) : i(i), d(d), b(b){}
};
我认为为struct创建默认构造函数看起来更相关<代码>结构A{int i;双d;常量布尔b;A(){i=0;d=0.0;b=false;}代码>这不是问题所在,但您应该按顺序排列成员声明size@vidhugangwar:构造函数使结构成为非POD结构,这在某些用例中可能是不可取的。@vidhugangwar:并且您的解决方案不会编译(因为``b`是const)。。。并使结构无论如何都不聚合。OP方法简洁而正确。@vidhugangwar:如果要使用初始值设定项列表,为什么不对所有成员使用它?这是不一致的。我认为为struct创建默认构造函数看起来更相关<代码>结构A{int i;双d;常量布尔b;A(){i=0;d=0.0;b=false;}代码>这不是问题所在,但您应该按顺序排列成员声明size@vidhugangwar:构造函数使结构成为非POD结构,这在某些用例中可能是不可取的。@vidhugangwar:并且您的解决方案不会编译(因为``b`是const)。。。并使结构无论如何都不聚合。OP方法简洁而正确。@vidhugangwar:如果要使用初始值设定项列表,为什么不对所有成员使用它?这是不一致的仍然保留
A
聚合类型。@Narek:A()=默认值
;不会(零-)初始化成员仍然保留A
聚合类型。@Narek:A()=默认值
;不会(零-)初始化成员。