Динамическая инициализация объекта в C ++
Опубликовано: 30 Ноября, 2021
В этой статье мы обсудим динамическую инициализацию объектов с помощью динамических конструкторов.
- Динамическая инициализация объекта относится к инициализации объектов во время выполнения, т. Е. Начальное значение объекта предоставляется во время выполнения.
- Этого можно добиться, используя конструкторы и передав параметры конструкторам.
- Это очень удобно, когда есть несколько конструкторов одного и того же класса с разными входами.
Динамический конструктор:
- Конструктор, используемый для выделения памяти во время выполнения, известен как динамический конструктор .
- Память выделяется во время выполнения с помощью оператора new, и аналогичным образом память освобождается во время выполнения с помощью оператора удаления.
Динамическое размещение :
Подход:
- В приведенном ниже примере new используется для динамической инициализации переменной в конструкторе по умолчанию, а память выделяется в куче.
- Объекты компьютерного класса вызывают функцию, и она отображает значение динамически выделяемой переменной, то есть ptr.
Ниже представлена программа для динамической инициализации объекта с помощью оператора new:
Динамическое освобождение :
Подход:
- В приведенном ниже коде удаление используется для динамического освобождения памяти.
- Содержимое 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 и многому другому, см. Полный курс подготовки к собеседованию .