对象表示和运算符sizeof的定义

时间:2014-10-07 04:31:18

标签: c++ class sizeof

对象表示概念的定义在3.9 / 4中给出:

[basic.types]

  

类型T的对象的对象表示是N的序列   由类型T的对象占用的unsigned char对象,其中N等于   sizeof(T)

但是sizeof运算符的定义如下:

[expr.sizeof]

  

sizeof运算符产生对象中的字节数   其操作数的表示

特别是:

  

当应用于类时,结果是一个字节数   该类的对象,包括放置所需的任何填充   数组中该类型的对象

我想通过例子来考虑这个定义:

struct A {
    int a;  //sizeof(a) is implementation defined
    long b; //sizeof(b) is implementation defined
    char c; //sizeof(c) is 1 by definition 
    // Padding, problbly equals to 3 butes
}

如何通过实施计算sizeof(A)?我们只计算sizeof(a) + sizeof(b) + sizeof(c) + padding的总和。

required for placingobjects of that type in an array的条件是什么?

1 个答案:

答案 0 :(得分:0)

您可以简单地将struct的大小计算为:

long size = sizeof(struct A);  

如果你想要一个struct A

的数组
struct A arr[/* Size of array */];