C ++ STD Auto_PTR

C ++ STD Auto_PTR
Los punteros son los que se utilizan para acceder a los recursos externos al programa igual que la memoria del montón. Cuando tengamos que acceder al montón de memoria, supongamos que tenemos un valor entero que se almacena en el montón de memoria, podemos acceder al uso de punteros. A veces, debido a la inconsciencia, los punteros no se dislocan y puede causar una fuga de memoria o puede bloquear todo el programa. Para evitar esta situación, se utilizan punteros inteligentes, en este mecanismo cuando se destruye el objeto, la memoria también se libera. Se pueden usar múltiples punteros inteligentes, pero, en este tutorial, discutiremos el puntero automático.

Además, el puntero automático es el puntero inteligente. Se necesita un puntero sin procesar, lo envuelve y asegura que la memoria puntiaguda por el puntero sin procesar se vuelva a publicar cada vez que el objeto de puntero automático sale del alcance, en cualquier momento un puntero automático puede apuntar a un objeto. Por lo tanto, cada vez que se asigna un puntero automático a otro puntero automático, la propiedad se transfiere a la instancia de puntero automático que ha recibido la tarea. Lo mismo sucederá cuando se copie un puntero automático.

Los punteros automáticos son los mismos que el puntero único o podemos decir que el puntero único es la nueva versión del puntero automático. Cuando el objeto se declara con un puntero automático, almacenará el puntero en un solo objeto que garantiza que cada vez que el puntero salga del alcance, el objeto al que apunta se destruirá automáticamente.

Sintaxis

La sintaxis para declarar un puntero automático se muestra a continuación:

std :: auto_ptr p (nuevo int);

En la sintaxis anterior "P" es el objeto Auto Pointer que hemos declarado dónde el "tipo" es el tipo de datos que contendrá el puntero P. Y usando la nueva palabra clave, hemos asignado el montón de memoria al entero que queremos almacenar en ella.

Ejemplo # 01:

Para comprender el funcionamiento del puntero automático en detalle, realizaremos un ejemplo en el que declararemos un puntero automático y mostraremos la ubicación de memoria a la que se referenciará. Ahora, pasemos a nuestro código donde se realizará todo el proceso desde la creación hasta la asignación de memoria. Primero incluiremos nuestro archivo de encabezado el "iOStream" y el segundo "memoria". El "iOStream" es el paquete de la biblioteca que permite al codificador realizar varias operaciones de entrada-salida. Mientras que la biblioteca de "memoria" es la que implica habilitar la asignación del montón de memoria. Fuera de la función principal, hemos declarado dos clases de objetos. El primero se llama "AutoPointer" que se llamará utilizando un puntero automático. Dentro del objeto "AutoPointer", creamos una función pública llamada "show ()".

El propósito de usar la palabra clave pública en ella es hacerlo accesible para todas las funciones dentro del código. En nuestra función show (), hemos mostrado un mensaje de creación de puntero, cada vez que se crea el puntero para el objeto "AutoPointer", mostrará el mensaje. La segunda clase de objeto se llama "AutoPointer2" que hemos creado para nuestro segundo puntero automático a la que también pasamos la declaración "Cout" mostrando el mensaje de "Second_PTR creado".

Ahora, pasar a la función principal que devuelve el tipo entero. Primero declaramos un puntero automático a un objeto del tipo "AutoPointer" llamado "First_PTR". Usando la nueva palabra clave, asignamos el montón de memoria al objeto "AutoPointer" en la siguiente línea de nuestro código que llamamos a la función de programa utilizando el puntero "First_PTR". En esto, hemos utilizado el operador de flecha "->", en C ++ nos permite acceder a los elementos de los objetos. Se usan con las variables del puntero que apuntan a la clase de objeto. Cuando se llama a la función de exposición usando el "First_PTR", mostrará el mensaje "First_PTR creado" y luego, mediante el uso del método get () que se proporciona para obtener la ubicación de memoria o los datos almacenados en un montón de memoria. Pero en nuestro caso, obtendremos la dirección donde se asigna el montón de memoria donde se asigna el "First_PTR".

Después de mostrar la ubicación "First_PTR", crearemos otro puntero automático llamado "Second_ptr" del tipo de objeto "AutoPointer2". Nuevamente, usando el nuevo puntero, hemos reservado la ubicación de la memoria para ello. Ahora, moviéndose a la siguiente línea, estamos utilizando la función "Second_Ptr" que llamamos la función "show ()" que hemos creado para el objeto "AutoPointer2". Una cosa para recordar es que cuando declaramos un puntero automático para algún objeto, obtendrá la función del objeto de clase para el que hemos creado el puntero. No obtendrá la función de la otra clase de objeto si tienen los mismos nombres. Como en nuestro caso en ambas clases de objetos, hemos creado las mismas funciones llamadas "show ()". Después de eso, utilizando el método get (), accedimos al montón de memoria usando el "segundo_ptr" donde se almacena el segundo puntero "segundo_ptr". Al final del código, hemos devuelto el valor nulo, lo que significa que el programa se ejecutará con éxito sin tener ningún error y realizará la tarea deseada para la cual está destinada a.

#incluir
#incluir
usando el espacio de nombres STD;
clase AutoPointer
público:
void show () cout<< "first_Ptr created" <;
clase AutoPointer2
público:
void show () cout<< "second_Ptr created" <;
int main ()

auto_ptrfirst_ptr (nuevo AutoPointer);
first_ptr-> show ();
cout<auto_ptrsecond_ptr (nuevo autopointer2);
segundo_ptr-> show ();
cout<regresar 0;

Ahora, revisemos la salida que hemos obtenido como resultado del código que hemos escrito que se muestra en el fragmento de arriba. Como podemos ver en esta salida, hemos mostrado el mensaje de creación de puntero para nuestros dos consejos automáticos. La ubicación de memoria para ambos punteros se ha mostrado sin ningún error.

Conclusión

En este tutorial, hemos demostrado el comportamiento interno del puntero automático. Auto Pointer se introdujo en C ++ 3. Al usar ejemplos y escenarios, lo explicamos brevemente para que sea fácil comprender el trabajo y la metodología de cómo se utiliza. Los punteros de automóviles están en desuso debido a su propiedad. Obtiene propiedad de una manera que dos punteros al mismo tiempo no pueden tener el mismo objeto.