DESCRIPCIÓN C ++ y Java en aguas poco profundas y copia copia profunda

En Java modo de clonación es copia superficial, si se desea implementar una copia profunda, necesidad de interfaces de clonables heredar, reemplazar el método de clonación.

copia superficial : el uso de un caso conocido de un miembro de la asignación de una variable de instancia recién creada por uno, de esta manera se denomina una copia superficial.

copia profunda : Cuando el constructor de copia de una clase, no sólo para copiar el valor de la variable de referencia de objeto de todos los no miembros, pero también para crear una nueva instancia como una variable miembro de un tipo de referencia, y el valor de inicialización ejemplo para la forma de parámetros. Esto se llama una copia profunda.

Eso es sólo una copia superficial copiar un objeto, pasando de referencia, no puede ser replicado ejemplo. La copia en profundidad se copian en los objetos de referencia interna, es crear una nueva instancia, y las instancias replicado.

Para copia superficial de una variable miembro objeto es cuando el tipo de datos primaria cuando los objetos variables miembro tiene dos espacios de memoria, los valores de paso operador de asignación, que puede ser replicado copia ejemplo poco profundo. Pero cuando los miembros del objeto variable es un tipo de datos de referencia no se puede lograr a copiar el objeto.

puntero salvaje: puntero salvaje a un objeto que se ha eliminado o puntero de acceso a las aplicaciones área de memoria limitada. punteros, punteros vacías salvajes por simplemente incapaces de determinar si el evitar NULL, pero sólo para tratar de reducir a desarrollar buenos hábitos de programación. Para la operación del puntero salvaje puede conducir fácilmente a errores.

Cuándo utilizar el C ++ constructor de copia ? C ++ se utiliza para generar un campo puntero nota copia superficial. El constructor de copia por defecto es copia superficial.

1. Un objeto pasado por valor pasa a la función de los mismos.

2. Un objeto pasado por valor devuelto por la función.

3. Un objeto tiene que ser inicializado por otro objeto.

C ++ constructor de copia dividido en contra copia en profundidad superficial de dos tipos
vs superficial copia profunda diferencia principal es si se debe volver a crear el puntero de copia de memoria.
Si no se crea una asignación de direcciones de memoria solamente una pálida copia,
crear una nueva memoria, el valor de toda la copia es una copia profunda.
Poco profunda copiar copias sólo el puntero tiene un miembro de puntero en circunstancias en que dirección de clase, dará lugar a dos miembros de los punteros a la misma memoria, esto va a ser un problema cuando y si la liberación de eliminación por separado, y por lo tanto necesitan una copia profunda.

Publicado 53 artículos originales · ganado elogios 5 · Vistas 440

Supongo que te gusta

Origin blog.csdn.net/qq_45287265/article/details/104979554
Recomendado
Clasificación