2009-10-10 11 views

Respuesta

5

Se alias dos punteros siempre que sea posible acceder al mismo objeto a través de ellos. El párrafo 3.10/15 de la norma especifica cuándo un acceso a un objeto es válido.

Si un programa intenta acceder al valor almacenado de un objeto a través de un lvalue distinta de uno de los siguientes tipos el comportamiento es indefinido:

  • el tipo dinámico del objeto,
  • una versión cv-calificada del tipo dinámico del objeto,
  • un tipo que es del tipo firmado o sin firmar correspondiente al tipo dinámico del objeto,
  • un tipo que es el tipo de firmado o no firmado ding a una versión cv-calificada del tipo dinámico de el objeto,
  • un agregado o tipo de unión que incluye uno de los tipos mencionados anteriormente entre sus miembros (incluido, recursivamente, un miembro de un subaggregado o unión contenida),
  • tipo que es un tipo de clase base (posiblemente cv calificado) del tipo dinámico del objeto,
  • un tipo de carácter char o unsigned char.

En su caso, *derived es o bien un valor L de tipo dinámico del objeto o es de un tipo que es un tipo de clase base del tipo dinámico del objeto. *base es de un tipo que es un tipo de clase base del tipo dinámico del objeto.

Por lo tanto, puede acceder al objeto a través de derived y base, haciendo que los dos punteros tengan un alias.

Cuestiones relacionadas