【发布时间】:2014-05-01 10:17:21
【问题描述】:
在 C++11 中引入了一个新特性,程序员可以在类定义中初始化类成员变量,见下面的代码:
struct foo
{
int size = 3;
int id = 1;
int type = 2;
unsigned char data[3] = {'1', '2', '3'};
};
这个初始化是在编译期间发生的,还是这个特性只是语法糖,成员变量在默认构造函数中初始化?
【问题讨论】:
-
不仅仅是默认构造函数。
-
您如何设想“在编译时”发生的初始化?这对你意味着什么?
-
如果你有一个
struct foo的全局实例,那么它很可能会在静态初始化期间“在编译时”被初始化。编译器很可能会在 .data 部分中分配变量并使用这些值对其进行初始化。因此,全局实例将在加载可执行文件时初始化。