Hola MAFUS;
Una de la diferencias que señalo en mi respuesta anterior se refiere al comportamiento frente a la
lectura de un miembro de la union que no haya sido el más recientemente escrito.
Mientras que para el C es de comportamiento definido por la implementación ("implementation defined"), para el C++ es de comportamiento indefinido ("undefined behavior").
Esto es, para el caso del C, es una cuestión práctica; para el caso del C++ es una cuestión moral:
Una de la diferencias que señalo en mi respuesta anterior se refiere al comportamiento frente a la
lectura de un miembro de la union que no haya sido el más recientemente escrito.
Mientras que para el C es de comportamiento definido por la implementación ("implementation defined"), para el C++ es de comportamiento indefinido ("undefined behavior").
Esto es, para el caso del C, es una cuestión práctica; para el caso del C++ es una cuestión moral:
- En C puedes hacerlo, el lenguaje no lo prohíbe, sólo que el resultado dependerá del compilador (simplemente no es portable).
- En C++ no debes hacerlo, el lenguaje lo prohíbe, el resultado es indefinido, puede suceder cualquier cosa, casi siempre mala.