logo

C++ konstruktor

A C++ nyelvben a konstruktor egy speciális metódus, amely automatikusan meghívódik az objektum létrehozásakor. Általában az új objektum adattagjainak inicializálására szolgál. A C++ konstruktorának ugyanaz a neve, mint az osztálynak vagy szerkezetnek.

Röviden, egy konstruktor nevű eljárás automatikusan meghívódik, amikor egy objektumot létrehozunk C++ nyelven. Általában új dolgok adattagjainak létrehozására szolgál. A C++ nyelvben az osztály vagy a struktúra neve konstruktornévként is szolgál. Amikor egy objektum elkészült, a konstruktor meghívásra kerül. Mivel ez hozza létre az értékeket vagy ad adatokat a dologhoz, konstruktorként ismert.

A Constructors prototípusa így néz ki:

 (list-of-parameters); 

A következő szintaxist használjuk az osztály konstruktorának meghatározásához:

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

A következő szintaxist használjuk egy osztályon kívüli konstruktor meghatározására:

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

A konstruktoroknak hiányzik a visszatérési típusuk, mivel nincs visszatérési értékük.

A C++-ban kétféle konstruktor létezhet.

  • Alapértelmezett konstruktor
  • Paraméterezett konstruktor

C++ alapértelmezett konstruktor

Az argumentum nélküli konstruktort alapértelmezett konstruktornak nevezzük. Az objektum létrehozásakor hívják meg.

Lássuk a C++ alapértelmezett Constructor egyszerű példáját.

 #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++ paraméterezett konstruktor

A paraméterekkel rendelkező konstruktort paraméterezett konstruktornak nevezzük. Különböző objektumok különböző értékeinek megadására szolgál.

Nézzük a C++ Parameterized Constructor egyszerű példáját.

 #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<<\'>

Mi különbözteti meg a konstruktorokat egy tipikus tagfüggvénytől?

  1. A konstruktor neve megegyezik az osztályéval
  2. Alapértelmezett Nincs bemeneti argumentum a konstruktorokhoz. A bemeneti argumentumok azonban rendelkezésre állnak a másolás és a paraméterezett konstruktorok számára.
  3. A konstruktoroknak nincs visszatérési típusa.
  4. Az objektum konstruktora automatikusan meghívásra kerül a létrehozáskor.
  5. Meg kell mutatni az osztályterem szabad területén.
  6. A C++ fordító létrehoz egy alapértelmezett konstruktort az objektumhoz, ha nincs megadva konstruktor (paramétereket vár, és üres törzse van).

Egy gyakorlati példa segítségével ismerkedjünk meg a C++ különböző konstruktortípusaival. Képzelje el, hogy felkeresett egy boltot, hogy markert vásároljon. Milyen alternatívái vannak, ha markert szeretne vásárolni? Az elsőnél megkérsz egy boltot, hogy adjon jelölőt, mivel nem adtad meg a kívánt marker márkanevét vagy színét, egyszerűen csak egy összeget kérsz egy kéréshez. Tehát, amikor azt mondtuk, hogy 'csak egy jelölőre van szükségem', akkor odaadta nekünk, ami a legnépszerűbb jelölő volt a piacon vagy az üzletében. Az alapértelmezett konstruktor pontosan az, aminek hangzik! A második megközelítés az, hogy bemész egy boltba, és megadod, hogy szeretnéd az XYZ márka piros jelzőjét. Megadja neked ezt a jelzőt, mivel felhoztad a témát. A paraméterek ebben az esetben így lettek beállítva. A paraméterezett konstruktor pedig pont az, aminek hangzik! A harmadik megköveteli, hogy látogass el egy boltba, és nyilatkozz, hogy szeretnél egy ilyen jelölőt (fizikai markert a kezeden). A boltos így észreveszi ezt a jelzőt. Új jelzővel lát el, ha azt mondod, hogy minden rendben. Ezért készítsen másolatot a jelölőről. És ez az, amit egy másolatkészítő csinál!

Mik a konstruktőr tulajdonságai?

  1. A konstruktor neve ugyanaz, mint az osztály, amelyhez tartozik.
  2. Bár lehetséges, a konstruktorokat általában az osztály nyilvános részében deklarálják. Ez azonban nem kötelező.
  3. Mivel a konstruktorok nem adnak vissza értékeket, hiányzik belőlük a visszatérési típus.
  4. Amikor létrehozunk egy osztályobjektumot, a konstruktor azonnal meghívásra kerül.
  5. Túlterhelt kivitelezők lehetségesek.
  6. A konstruktor virtuálissá nyilvánítása nem megengedett.
  7. Konstruktort nem lehet örökölni.
  8. A konstruktor címekre nem lehet hivatkozni.
  9. A memória lefoglalásakor a konstruktor implicit hívásokat hajt végre az új és törlési operátoroknak.

Mi az a másoláskonstruktor?

A másoláskonstruktorként ismert tagfüggvény inicializál egy elemet egy másik objektum segítségével, amely ugyanabból az osztályból származik – a Copy Constructors részletes megbeszélése.

Minden alkalommal, amikor egy vagy több nem alapértelmezett konstruktort (paraméterekkel) adunk meg egy osztályhoz, egy alapértelmezett konstruktort is (paraméterek nélkül) kell megadnunk, mivel a fordító ebben az esetben nem ad meg. A legjobb gyakorlat az, hogy mindig deklarálunk egy alapértelmezett konstruktort, még akkor is, ha ez nem kötelező.

Az azonos osztályba tartozó objektumra való hivatkozást a másoláskonstruktornak kell megkövetelnie.

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

Mi az a destruktor a C++-ban?

A konstruktorral egyenértékű speciális tagfüggvény a destruktor. A konstruktor osztályobjektumokat hoz létre, amelyeket a destruktor megsemmisít. A „destruktor” szó, amelyet a tilde () szimbólum követ, megegyezik az osztály nevével. Egyszerre csak egy destruktort határozhat meg. Egy konstruktor által készített objektum megsemmisítésének egyik módja a destruktor használata. Emiatt a destruktorokat nem lehet túlterhelni. A pusztítók nem fogadnak el érveket és nem adnak vissza semmit. Amint az elem elhagyja a hatókört, azonnal meghívásra kerül. A destruktorok felszabadítják a konstruktor által generált objektumok által használt memóriát. A Destructor megfordítja a dolgok létrehozásának folyamatát azáltal, hogy elpusztítja őket.

Az osztály destruktorának meghatározásához használt nyelv

 ~ () { } 

Az osztály azon kívüli destruktorának meghatározására használt nyelv

tat teljes formában
 : : ~ (){}