[英]How to order members of a class if there are static members too?
我知道,声明类成员的顺序对于使用较少的内存(基于类型大小的降序)很重要。 例如: class A { int x; double y; int z; };
class A { int x; double y; int z; };
将比class A { double y; int x; int z; };
使用更多的内存class A { double y; int x; int z; };
class A { double y; int x; int z; };
对于最新的编译器(我使用Ubuntu),这仍然适用吗? 如果是,我应该将静态成员放在哪里?
class A
{
private:
static int m1;
double m2;
int m3;
public:
// ...
};
我应该在哪里放置m1以减少内存使用量?
根据C ++标准
静态数据成员不属于类的子对象。
因此,它们在类定义中甚至可能具有不完整的类型。 它们不会影响班级规模。
静态数据成员不存储在类实例中。 相反,您会得到每个实例的一个实例 ,并且这些实例在您定义它们的地方“存在”。
struct A
{
static int m1;
double m2;
int m3;
};
int A::m1; // <--- this lives here!
这样,它们的声明在A
定义中的位置对于A
的非静态数据成员的填充,对齐和排序完全不重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.