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++?

Еквивалентна специална членска функция на конструктор е деструктор. Конструкторът създава обекти от клас, които се унищожават от деструктора. Думата „деструктор“, последвана от символа тилда (), е същата като името на класа. Можете да дефинирате само един деструктор наведнъж. Един метод за унищожаване на обект, създаден от конструктор, е използването на деструктор. В резултат на това деструкторите не могат да бъдат претоварени. Деструкторите не приемат никакви аргументи и не връщат нищо. Веднага след като елементът напусне обхвата, той веднага се извиква. Деструкторите освобождават паметта, използвана от обектите, генерирани от конструктора. Destructor обръща процеса на създаване на неща, като ги унищожава.

Езикът, използван за дефиниране на деструктора на класа

 ~ () { } 

Езикът, използван за дефиниране на деструктора на класа извън него

 : : ~ (){}