C++
Más comportamientos indefinidos en C ++
Buscar..
Introducción
Más ejemplos de cómo C ++ puede salir mal.
Continuación del comportamiento indefinido
Refiriéndose a los miembros no estáticos en las listas de inicializadores
Hacer referencia a miembros no estáticos en las listas de inicializadores antes de que el constructor haya comenzado a ejecutarse puede dar como resultado un comportamiento indefinido. Esto resulta ya que no todos los miembros están construidos en este momento. A partir del borrador estándar:
§12.7.1: para un objeto con un constructor no trivial, refiriéndose a cualquier miembro o clase base no estática del objeto antes de que el constructor comience a ejecutar los resultados en un comportamiento indefinido.
Ejemplo
struct W { int j; };
struct X : public virtual W { };
struct Y {
int *p;
X x;
Y() : p(&x.j) { // undefined, x is not yet constructed
}
};
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow