logo

C++ конструктор

У C++ конструктор – це спеціальний метод, який автоматично викликається під час створення об’єкта. Він використовується для ініціалізації членів даних нового об’єкта. Конструктор у C++ має те саме ім’я, що й клас або структура.

Коротше кажучи, певна процедура, яка називається конструктором, викликається автоматично, коли об’єкт створюється в C++. Загалом, він використовується для створення членів даних нових речей. У C++ ім'я класу або структури також служить ім'ям конструктора. Коли об’єкт завершено, викликається конструктор. Оскільки він створює значення або надає дані для речі, він відомий як конструктор.

Прототип Constructors виглядає так:

 (list-of-parameters); 

Для визначення конструктора класу використовується такий синтаксис:

 (list-of-parameters) { // constructor definition } 

Для визначення конструктора поза класом використовується такий синтаксис:

 : : (list-of-parameters){ // constructor definition} 

У конструкторів відсутній тип повернення, оскільки вони не мають значення, що повертається.

У C++ може бути два типи конструкторів.

  • Конструктор за замовчуванням
  • Параметризований конструктор

Конструктор C++ за замовчуванням

Конструктор, який не має аргументів, називається конструктором за замовчуванням. Він викликається під час створення об'єкта.

Давайте розглянемо простий приклад конструктора C++ за замовчуванням.

 #include using namespace std; class Employee { public: Employee() { cout&lt;<'default constructor invoked'<<endl; } }; int main(void) { employee e1; creating an object of e2; return 0; < pre> <p> <strong>Output:</strong> </p> <pre>Default Constructor Invoked Default Constructor Invoked </pre> <h2>C++ Parameterized Constructor</h2> <p>A constructor which has parameters is called parameterized constructor. It is used to provide different values to distinct objects.</p> <p>Let&apos;s see the simple example of C++ Parameterized Constructor.</p> <pre> #include using namespace std; class Employee { public: int id;//data member (also instance variable) string name;//data member(also instance variable) float salary; Employee(int i, string n, float s) { id = i; name = n; salary = s; } void display() { cout&lt; <id<<' '<<name<<' '<<salary<<endl; } }; int main(void) { employee e1="Employee(101," 'sonoo', 890000); creating an object of e2="Employee(102," 'nakul', 59000); e1.display(); e2.display(); return 0; < pre> <p> <strong>Output:</strong> </p> <pre>101 Sonoo 890000 102 Nakul 59000 </pre> <h2>What distinguishes constructors from a typical member function?</h2> <ol class="points"> <li>Constructor&apos;s name is the same as the class&apos;s</li> <li>Default There isn&apos;t an input argument for constructors. However, input arguments are available for copy and parameterized constructors.</li> <li>There is no return type for constructors.</li> <li>An object&apos;s constructor is invoked automatically upon creation.</li> <li>It must be shown in the classroom&apos;s open area.</li> <li>The C++ compiler creates a default constructor for the object if a constructor is not specified (expects any parameters and has an empty body).</li> </ol> <p>By using a practical example, let&apos;s learn about the various constructor types in C++. Imagine you visited a store to purchase a marker. What are your alternatives if you want to buy a marker? For the first one, you ask a store to give you a marker, given that you didn&apos;t specify the brand name or colour of the marker you wanted, simply asking for one amount to a request. So, when we just said, &apos;I just need a marker,&apos; he would hand us whatever the most popular marker was in the market or his store. The default constructor is exactly what it sounds like! The second approach is to go into a store and specify that you want a red marker of the XYZ brand. He will give you that marker since you have brought up the subject. The parameters have been set in this instance thus. And a parameterized constructor is exactly what it sounds like! The third one requires you to visit a store and declare that you want a marker that looks like this (a physical marker on your hand). The shopkeeper will thus notice that marker. He will provide you with a new marker when you say all right. Therefore, make a copy of that marker. And that is what a copy constructor does!</p> <h2>What are the characteristics of a constructor?</h2> <ol class="points"> <li>The constructor has the same name as the class it belongs to.</li> <li>Although it is possible, constructors are typically declared in the class&apos;s public section. However, this is not a must.</li> <li>Because constructors don&apos;t return values, they lack a return type.</li> <li>When we create a class object, the constructor is immediately invoked.</li> <li>Overloaded constructors are possible.</li> <li>Declaring a constructor virtual is not permitted.</li> <li>One cannot inherit a constructor.</li> <li>Constructor addresses cannot be referenced to.</li> <li>When allocating memory, the constructor makes implicit calls to the new and delete operators.</li> </ol> <h2>What is a copy constructor?</h2> <p>A member function known as a copy constructor initializes an item using another object from the same class-an in-depth discussion on Copy Constructors.</p> <p>Every time we specify one or more non-default constructors (with parameters) for a class, we also need to include a default constructor (without parameters), as the compiler won&apos;t supply one in this circumstance. The best practice is to always declare a default constructor, even though it is not required.</p> <p>A reference to an object belonging to the same class is required by the copy constructor.</p> <pre> Sample(Sample &amp;t) { id=t.id; } </pre> <h2>What is a destructor in C++?</h2> <p>An equivalent special member function to a constructor is a destructor. The constructor creates class objects, which are destroyed by the destructor. The word &apos;destructor,&apos; followed by the tilde () symbol, is the same as the class name. You can only define one destructor at a time. One method of destroying an object made by a constructor is to use a destructor. Destructors cannot be overloaded as a result. Destructors don&apos;t take any arguments and don&apos;t give anything back. As soon as the item leaves the scope, it is immediately called. Destructors free up the memory used by the objects the constructor generated. Destructor reverses the process of creating things by destroying them.</p> <p>The language used to define the class&apos;s destructor</p> <pre> ~ () { } </pre> <p>The language used to define the class&apos;s destructor outside of it</p> <pre> : : ~ (){} </pre> <hr></id<<'></pre></'default>

Параметризований конструктор C++

Конструктор, який має параметри, називається параметризованим конструктором. Він використовується для надання різних значень окремим об’єктам.

Давайте розглянемо простий приклад параметризованого конструктора C++.

 #include using namespace std; class Employee { public: int id;//data member (also instance variable) string name;//data member(also instance variable) float salary; Employee(int i, string n, float s) { id = i; name = n; salary = s; } void display() { cout&lt; <id<<\' \'<<name<<\' \'<<salary<<endl; } }; int main(void) { employee e1="Employee(101," \'sonoo\', 890000); creating an object of e2="Employee(102," \'nakul\', 59000); e1.display(); e2.display(); return 0; < pre> <p> <strong>Output:</strong> </p> <pre>101 Sonoo 890000 102 Nakul 59000 </pre> <h2>What distinguishes constructors from a typical member function?</h2> <ol class="points"> <li>Constructor&apos;s name is the same as the class&apos;s</li> <li>Default There isn&apos;t an input argument for constructors. However, input arguments are available for copy and parameterized constructors.</li> <li>There is no return type for constructors.</li> <li>An object&apos;s constructor is invoked automatically upon creation.</li> <li>It must be shown in the classroom&apos;s open area.</li> <li>The C++ compiler creates a default constructor for the object if a constructor is not specified (expects any parameters and has an empty body).</li> </ol> <p>By using a practical example, let&apos;s learn about the various constructor types in C++. Imagine you visited a store to purchase a marker. What are your alternatives if you want to buy a marker? For the first one, you ask a store to give you a marker, given that you didn&apos;t specify the brand name or colour of the marker you wanted, simply asking for one amount to a request. So, when we just said, &apos;I just need a marker,&apos; he would hand us whatever the most popular marker was in the market or his store. The default constructor is exactly what it sounds like! The second approach is to go into a store and specify that you want a red marker of the XYZ brand. He will give you that marker since you have brought up the subject. The parameters have been set in this instance thus. And a parameterized constructor is exactly what it sounds like! The third one requires you to visit a store and declare that you want a marker that looks like this (a physical marker on your hand). The shopkeeper will thus notice that marker. He will provide you with a new marker when you say all right. Therefore, make a copy of that marker. And that is what a copy constructor does!</p> <h2>What are the characteristics of a constructor?</h2> <ol class="points"> <li>The constructor has the same name as the class it belongs to.</li> <li>Although it is possible, constructors are typically declared in the class&apos;s public section. However, this is not a must.</li> <li>Because constructors don&apos;t return values, they lack a return type.</li> <li>When we create a class object, the constructor is immediately invoked.</li> <li>Overloaded constructors are possible.</li> <li>Declaring a constructor virtual is not permitted.</li> <li>One cannot inherit a constructor.</li> <li>Constructor addresses cannot be referenced to.</li> <li>When allocating memory, the constructor makes implicit calls to the new and delete operators.</li> </ol> <h2>What is a copy constructor?</h2> <p>A member function known as a copy constructor initializes an item using another object from the same class-an in-depth discussion on Copy Constructors.</p> <p>Every time we specify one or more non-default constructors (with parameters) for a class, we also need to include a default constructor (without parameters), as the compiler won&apos;t supply one in this circumstance. The best practice is to always declare a default constructor, even though it is not required.</p> <p>A reference to an object belonging to the same class is required by the copy constructor.</p> <pre> Sample(Sample &amp;t) { id=t.id; } </pre> <h2>What is a destructor in C++?</h2> <p>An equivalent special member function to a constructor is a destructor. The constructor creates class objects, which are destroyed by the destructor. The word &apos;destructor,&apos; followed by the tilde () symbol, is the same as the class name. You can only define one destructor at a time. One method of destroying an object made by a constructor is to use a destructor. Destructors cannot be overloaded as a result. Destructors don&apos;t take any arguments and don&apos;t give anything back. As soon as the item leaves the scope, it is immediately called. Destructors free up the memory used by the objects the constructor generated. Destructor reverses the process of creating things by destroying them.</p> <p>The language used to define the class&apos;s destructor</p> <pre> ~ () { } </pre> <p>The language used to define the class&apos;s destructor outside of it</p> <pre> : : ~ (){} </pre> <hr></id<<\'>

Що відрізняє конструктори від типової функції-члена?

  1. Ім'я конструктора збігається з ім'ям класу
  2. За замовчуванням Немає вхідного аргументу для конструкторів. Проте вхідні аргументи доступні для копіювання та параметризованих конструкторів.
  3. Для конструкторів немає типу повернення.
  4. Конструктор об'єкта викликається автоматично після створення.
  5. Його необхідно демонструвати на відкритому майданчику класу.
  6. Компілятор C++ створює конструктор за замовчуванням для об’єкта, якщо конструктор не вказано (очікує будь-які параметри та має порожнє тіло).

Використовуючи практичний приклад, давайте дізнаємося про різні типи конструкторів у C++. Уявіть, що ви зайшли в магазин, щоб купити маркер. Які у вас альтернативи, якщо ви хочете купити маркер? Для першого ви просите магазин надати вам маркер, враховуючи, що ви не вказали марку чи колір маркера, який вам потрібен, просто просите одну суму для запиту. Тож, коли ми просто говорили: «Мені просто потрібен маркер», він давав нам найпопулярніший маркер на ринку чи в його магазині. Конструктор за замовчуванням - це саме те, що він звучить! Другий підхід - зайти в магазин і вказати, що вам потрібен червоний маркер марки XYZ. Він дасть вам цей маркер, оскільки ви підняли цю тему. У цьому випадку параметри встановлено таким чином. І параметризований конструктор - це саме те, що він звучить! Третій вимагає, щоб ви відвідали магазин і заявили, що вам потрібен маркер, який виглядає так (фізичний маркер на руці). Таким чином, власник магазину помітить цей маркер. Він надасть вам новий маркер, коли ви скажете, що все в порядку. Тому зробіть копію цього маркера. І саме це робить конструктор копіювання!

Які характеристики конструктора?

  1. Конструктор має таке ж ім’я, як і клас, до якого він належить.
  2. Хоча це можливо, конструктори зазвичай оголошуються у загальнодоступній секції класу. Однак це не обов'язково.
  3. Оскільки конструктори не повертають значення, у них відсутній тип повернення.
  4. Коли ми створюємо об’єкт класу, негайно викликається конструктор.
  5. Можливі перевантажені конструктори.
  6. Оголошення конструктора віртуальним не дозволяється.
  7. Не можна успадкувати конструктор.
  8. Не можна посилатися на адреси конструктора.
  9. Під час виділення пам’яті конструктор робить неявні виклики операторів new і delete.

Що таке конструктор копіювання?

Функція-член, відома як конструктор копіювання, ініціалізує елемент за допомогою іншого об’єкта з того самого класу – детальне обговорення конструкторів копіювання.

Кожного разу, коли ми вказуємо один або більше конструкторів за замовчуванням (з параметрами) для класу, нам також потрібно включити конструктор за замовчуванням (без параметрів), оскільки компілятор не надасть його за таких обставин. Найкраще завжди оголошувати конструктор за замовчуванням, навіть якщо це не обов’язково.

Посилання на об'єкт, що належить до того самого класу, вимагає конструктор копіювання.

 Sample(Sample &amp;t) { id=t.id; } 

Що таке деструктор у C++?

Еквівалентною спеціальною функцією-членом для конструктора є деструктор. Конструктор створює об'єкти класу, які знищуються деструктором. Слово «деструктор», за яким іде символ тильди (), збігається з назвою класу. Одночасно можна визначити лише один деструктор. Одним із методів знищення об’єкта, створеного конструктором, є використання деструктора. У результаті деструктори не можуть бути перевантажені. Деструктори не приймають жодних аргументів і нічого не повертають. Як тільки елемент залишає область видимості, він негайно викликається. Деструктори звільняють пам'ять, яка використовується об'єктами, згенерованими конструктором. Деструктор повертає процес створення речей, знищуючи їх.

Мова, яка використовується для визначення деструктора класу

 ~ () { } 

Мова, яка використовується для визначення деструктора класу поза ним

 : : ~ (){}