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; }
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