今天我发现自己正在创建一个包含2个整数的静态数组,由于C++(不是C++11)不允许其内联初始化,所以我回到使用了一个类型为结构体的静态变量。
class MyWidget {
...
static const struct Margin {
const int horizontal = 1;
const int vertical = 1;
} margin;
};
我注意到结构体Margin的内部变量仅被用于一次,因此我决定将它们也改为静态的。
我注意到结构体Margin的内部变量仅被用于一次,因此我决定将它们也改为静态的。
class MyWidget {
...
static const struct Margin {
static const int horizontal = 1;
static const int vertical = 1;
} margin;
};
让我惊奇的是声明一个静态结构体变量和声明一个带有静态成员的静态结构体变量之间的区别。就我所知,静态对象只在内存中分配一次,因此无论我的成员是否为静态,Margin结构体都只会被分配一次。
我错过了什么吗?这两者之间存在差异还是只是纯粹的语法糖?