Referencia a Objetos Dinámicos en C++

En C++, los objetos se pueden crear en tiempo de ejecución. C++ admite dos operadores new y delete para realizar la asignación y desasignación de memoria. Este tipo de objetos se denominan objetos dinámicos. El operador new se usa para crear objetos dinámicamente y el operador delete se usa para eliminar objetos dinámicamente. Los objetos dinámicos se pueden crear con la ayuda de punteros .

Sintaxis:

nombre de clase *ptr_obj; // puntero al objeto
ptr_obj = new ClassName // Creación dinámica de objetos
delete ptr_obj; // Eliminar objeto dinámicamente

A continuación se muestra el programa C++ para implementar los objetos dinámicos.

C++

// C++ program to implement 
// dynamic objects
#include<iostream>
using namespace std;
  
// Class definition
class Test
{
    // Data members
    int a, b;
    public:
    
        // Constructor to initialize
        // data members of class
        Test()
        {
            cout << "Constructor is called" << 
                     endl;
            a = 1;
            b = 2;
        };
    
        // Destructor 
        ~Test()
        {
            cout << "Destructor is called" << 
                     endl;
        }
    
        // Function to print values
        // of data members
        void show()
        {
            cout << "a = " << 
                     a << endl;
            cout << "b = " << 
                     b << endl;
        }
};
  
// Driver code
int main()
{
    // pointer to object
    Test *ptr;         
    
    // dynamic object creation
    ptr = new Test;  
    
    // Accessing member through 
    // pointer to object
    ptr->show();     
    
    // Destroying object dynamically
    delete ptr;     
    return 0;
}
Producción

Constructor is called
a = 1
b = 2
Destructor is called

Referencia a objetos dinámicos

La dirección de los objetos dinámicos devueltos por el operador new se puede desreferenciar y se puede crear una referencia a ellos.

Sintaxis:

ClassName &RefObj = * (nuevo ClassName);

La referencia al objeto RefObj se puede utilizar como un objeto normal. La memoria asignada a dichos objetos no puede liberarse excepto durante la terminación del programa.

A continuación se muestra el programa de Referencia a Objetos Dinámicos en C++.

C++

// C++ program to implement
// Reference to dynamic objects
#include<iostream>
#include<string.h>
using namespace std;
  
class student{
  
private:
  int roll_no;
  char name[20];
  
public:
  void setdata(int roll_no_in, 
               char name_in[20])
  {
    roll_no = roll_no_in;
    strcpy(name, name_in);  
  }
    
  void outdata()
  {
    cout << "Roll No is: " << 
             roll_no << endl;
    cout << "Name: " << name << 
             endl;
 }
 };
  
// Driver code
int main()
{
  // Reference to dynamic object
  student &s1 = *(new student);                        
  s1.setdata(1, "Ajay");
  s1.outdata();
    
  // Reference to dynamic object
  student &s2 = *(new student);                        
  s2.setdata(2, "Aman");
  s2.outdata();
  student &s3 = *(new student);
  s3.setdata(3, "Akshay");
    
  // Reference to static object
  student &s4 = s3;                                    
  s3.outdata();
  s4.outdata();
  return 0;
}

Producción:

El número de lista es: 1
Nombre: Ajay
El número de lista es: 2
Nombre: Aman
El número de lista es: 3
Nombre: Akshay
El número de lista es: 3
Nombre: Akshay

Publicación traducida automáticamente

Artículo escrito por akshaysobti15 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *