$objref->new()
en vez de como método de una clase
(Biblio::Doc->new()
)
el constructor utilice como valores de inicialización por defecto
los que tiene ese objeto ($objref->new()
). En resumen: el constructor permite
realizar la creación de una copia de un objeto.
Obsérvese que, con respecto al punto planteado sobre la creación de duplicados de un objeto, no basta con copiar el ''hash'', ya que una asignación a un nuevo ''hash'' no copia la ''bendición''. Existe además el incoveniente de que si uno de los atributos del objeto es una referencia, deberíamos crear un duplicado de lo referenciado mas que copiar la referencia.
Para diferenciar entre una llamada al constructor a traves de un objeto ($objref->new()
)
y una llamada como método de una clase (Biblio::Doc->new()
)
se usa la función ref()
(véase la subsección 4.2).
Cuando se llama a través de una referencia a un objeto, la función ref()
devuelve la cadena conteniendo la clase. Si se llama como método de una clase, ref()
se aplica a una cadena y nos devuelve una cadena vacía. De este modo el constructor
puede reconocer el formato de la llamada.