Creando un nuevo objeto a partir de información de tipo dinámico

En C ++, ¿hay alguna forma de consultar el tipo de un objeto y luego usar esa información para crear dinámicamente un nuevo objeto del mismo tipo?

Por ejemplo, digamos que tengo una jerarquía simple de 3 clases:

class Base
class Foo : public Base
class Bar : public Base

Ahora supongamos que te entrego un objeto moldeado como tipo Base, que en realidad es del tipo Foo. ¿Hay alguna forma de consultar el tipo y usar esa información para crear posteriormente nuevos objetos del tipo Foo?

Respuestas a la pregunta(8)

Su respuesta a la pregunta