Динамическая инициализация объекта в C ++

Опубликовано: 30 Ноября, 2021

В этой статье мы обсудим динамическую инициализацию объектов с помощью динамических конструкторов.

  • Динамическая инициализация объекта относится к инициализации объектов во время выполнения, т. Е. Начальное значение объекта предоставляется во время выполнения.
  • Этого можно добиться, используя конструкторы и передав параметры конструкторам.
  • Это очень удобно, когда есть несколько конструкторов одного и того же класса с разными входами.

Динамический конструктор:

  • Конструктор, используемый для выделения памяти во время выполнения, известен как динамический конструктор .
  • Память выделяется во время выполнения с помощью оператора new, и аналогичным образом память освобождается во время выполнения с помощью оператора удаления.

Динамическое размещение :

Подход:

  1. В приведенном ниже примере new используется для динамической инициализации переменной в конструкторе по умолчанию, а память выделяется в куче.
  2. Объекты компьютерного класса вызывают функцию, и она отображает значение динамически выделяемой переменной, то есть ptr.

Ниже представлена программа для динамической инициализации объекта с помощью оператора new:

Динамическое освобождение :

Подход:

  1. В приведенном ниже коде удаление используется для динамического освобождения памяти.
  2. Содержимое obj1 перезаписывается в объекте obj2 с помощью оператора присваивания, затем объект obj1 освобождается с помощью оператора удаления.

Ниже приведен код для динамического освобождения памяти с помощью оператора удаления.

C ++

// C++ program to dynamically
// deallocating the memory
#include <iostream>
using namespace std;
class geeks {
int * ptr;
public :
// Default constructor
geeks()
{
ptr = new int ;
*ptr = 10;
}
// Function to display the value
void display()
{
cout << "Value: " << *ptr
<< endl;
}
};
// Driver Code
int main()
{
// Dynamically allocating memory
// using new operator
geeks* obj1 = new geeks();
geeks* obj2 = new geeks();
// Assigning obj1 to obj2
obj2 = obj1;
// Function Call
obj1->display();
obj2->display();
// Dynamically deleting the memory
// allocated to obj1
delete obj1;
return 0;
}
Выход:
Значение: 10
Значение: 10

Ниже программа на C ++ демонстрирует динамическую инициализацию объектов и расчет банковского депозита:

C ++

// C++ program to illustrate the dynamic
// initialisation as memory is allocated
// to the object
#include <iostream>
using namespace std;
class bank {
int principal;
int years;
float interest;
returnvalue; float
public :
// Default constructor
bank() {}
// Parameterised constructor to
// calculate interest(float)
bank( int p, int y, float i)
{
principal = p;
years = y;
interest = i;
returnvalue = principal;
cout << " Deposited amount (float):" ;
// Finding the interest amount
for ( int i = 0; i < years; i++) {
returnvalue = returnvalue
* (1 + interest);
}
}
// Parameterised constructor to
// calculate interest(integer)
bank( int p, int y, int i)
{
principal = p;
years = y;
interest = i;
returnvalue = principal;
cout << " Deposited amount"
<< " (integer):" ;
// Find the interest amount
for ( int i = 0; i < years; i++) {
returnvalue = returnvalue
* (1 + interest);
}
}
// Display function
void display( void )
{
cout << returnvalue
<< endl;
}
};
// Driver Code
int main()
{
// Variable initialisation
int p = 200;
int y = 2;
int I = 5;
float i = 2.25;
// Object is created with
// float parameters
bank b1(p, y, i);
// Function Call with object
// of class
b1.display();
// Object is created with
// integer parameters
bank b2(p, y, I);
// Function Call with object
// of class
b2.display();
return 0;
}
Выход:
Внесенная сумма (в обращении): 2112,5

Внесенная сумма (целое число): 7200
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .