Sí, si son tipos de POD. Los tipos de POD están garantizados para ser compatibles con el diseño (es decir, puede memcpy de uno a otro) si tienen miembros compatibles con el diseño en el mismo orden. Como una subclase tiene automáticamente todos los miembros de su clase base en el mismo orden y, en este caso, no otros, serán compatibles con el diseño y, por lo tanto, del mismo tamaño. Ver la sección 9.3 de la especificación.
Tenga en cuenta que con el fin de ser tipos POD que no deben tener funciones virtuales (entre otros requisitos)
EDITAR
El último borrador de la norma ha dividido a los requisitos para los tipos de POD en dos conjuntos: triviales clases y diseño estándar clases. POD clases son las que son a la vez trivial y diseño estándar, y creo que para la Garantía sizeof desea, simplemente estar disposición estándar basta - No necesitan también ser trivial (y por lo tanto POD) clases. Los requisitos para disposición estándar de la especificación son:
A clase estándar-layout es una clase que:
- no tiene miembros de datos no estáticos de la clase de tipo no estándar-layout (o array de tales tipos) o referencia,
- no tiene funciones virtuales (10.3) ni clases base virtuales (10.1),
- tiene el mismo control de acceso (Cláusula 11) para todos los miembros de datos no estáticos,
- no tiene clases de bases no estándar de diseño,
- o bien no tiene ninguna miembros de datos estáticos en la clase más derivada y como máximo una clase base con miembros de datos no estáticos, o no tiene clases base con miembros de datos no estáticos, y
- no tiene clases base del mismo tipo que primer miembro de datos no estáticos.108
También tenga en cuenta que el 'Bar' tha t está contenido en 'Foo' puede tener un tamaño diferente al' Bar' que no está contenido en un 'Foo'. Por ejemplo, una optimización común es hacer que las clases base tengan un tamaño cero si están vacías, pero distintas de cero si no están contenidas como clases base (como lo requiere C++). –