C ++ sizeof класс-оболочка - PullRequest
9 голосов
/ 13 мая 2011

Предположим, у меня есть класс A, который ничего не наследует, не имеет виртуальных методов и имеет ровно одну переменную типа T. Гарантирует ли C ++ sizeof(A) == sizeof(T)?

EDIT:

Также, если бы T был составным типом, это имело бы значение?

Ответы [ 3 ]

7 голосов
/ 13 мая 2011

Нет, это может быть больше, чем sizeof(T) из-за заполнения.

2 голосов
/ 13 мая 2011

Я не думаю, что это явно гарантирует это, но я не думаю, что когда-либо будет иначе.

0 голосов
/ 13 мая 2011

Я думаю, что C ++ должен гарантировать sizeof (A) == sizeof (T).

Рассмотрим ситуацию ниже, C ++ должен заставить его работать так же, как в C:

A a[10];
T t[10];

A * ap = (A *) t;
T * tp = (T *) a;

memcpy(ap, tp, sizeof(*ap));
...