结构变量成员后的大括号是什么意思
What do curly braces after a struct variable member mean?
在一些维护(Valgrind'ing(过程中,我遇到了以下代码:
#pragma pack(push, 1)
struct somename
{
uint16_t a{};
uint16_t b{};
uint32_t c{};
};
#pragma pack(pop)
我希望{}
告诉编译器始终将值初始化为0(当使用new或使用堆栈变量进行分配时(,但我找不到任何关于这方面的示例或文档。我的这个假设正确吗?如果不是:
结构成员变量后面的大括号{}
是什么意思?
这是默认的成员初始值设定项(自C++11以来(。
(重点矿井(
通过默认成员初始值设定项,是包含在成员声明中的大括号或等于初始值设定值设定项,如果从构造函数的成员初始值设置项列表中省略了该成员,则使用该初始值设置项。
如果一个成员具有默认的成员初始值设定项,并且也出现在构造函数的成员初始化列表中,则该构造函数将忽略默认的成员初始化项。
因此,数据成员a
、b
和c
被值初始化(对于内置类型为零初始化(为0
。
这里记录的是零初始化(第二种情况(:
因此,所有值都设置为0。
来自文档:
当使用由一对大括号
T{}
组成的初始值设定项声明命名变量(自动、静态或线程本地(时,将执行值初始化。
值初始化的效果是对象初始化为零。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思