logo

C++ konstruktør

I C++ er constructor en speciel metode, som påkaldes automatisk på tidspunktet for objektoprettelse. Det bruges til at initialisere datamedlemmerne i et nyt objekt generelt. Konstruktøren i C++ har samme navn som klasse eller struktur.

Kort fortalt kaldes en bestemt procedure kaldet en konstruktør automatisk, når et objekt oprettes i C++. Generelt bruges det til at skabe datamedlemmer af nye ting. I C++ fungerer klasse- eller strukturnavnet også som konstruktørnavnet. Når et objekt er færdigt, kaldes konstruktøren. Fordi det skaber værdierne eller giver data for tingen, er det kendt som en konstruktør.

Constructors prototype ser sådan ud:

 (list-of-parameters); 

Følgende syntaks bruges til at definere klassens konstruktør:

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

Følgende syntaks bruges til at definere en konstruktør uden for en klasse:

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

Konstruktører mangler en returtype, da de ikke har en returværdi.

Der kan være to typer konstruktører i C++.

  • Standard konstruktør
  • Parametriseret konstruktør

C++ Standard konstruktør

En konstruktør, der ikke har noget argument, er kendt som standardkonstruktør. Det påkaldes på tidspunktet for oprettelse af objektet.

Lad os se det enkle eksempel på C++ default Constructor.

 #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++ Parameteriseret konstruktør

En konstruktør, der har parametre, kaldes parametriseret konstruktør. Det bruges til at give forskellige værdier til forskellige objekter.

Lad os se det enkle eksempel på C++ Parameterized Constructor.

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

Hvad adskiller konstruktører fra en typisk medlemsfunktion?

  1. Konstruktørens navn er det samme som klassens
  2. Standard Der er ikke et input-argument for konstruktører. Imidlertid er input-argumenter tilgængelige for kopi- og parameteriserede konstruktører.
  3. Der er ingen returtype for konstruktører.
  4. Et objekts konstruktør aktiveres automatisk ved oprettelse.
  5. Det skal vises i klasseværelsets åbne areal.
  6. C++-kompileren opretter en standardkonstruktør for objektet, hvis en konstruktør ikke er angivet (forventer alle parametre og har en tom krop).

Ved at bruge et praktisk eksempel, lad os lære om de forskellige konstruktørtyper i C++. Forestil dig, at du besøgte en butik for at købe en markør. Hvad er dine alternativer, hvis du vil købe en tusch? For den første beder du en butik om at give dig en markør, da du ikke har angivet mærkenavnet eller farven på den markør, du ønsker, blot beder om et beløb til en anmodning. Så når vi lige sagde: 'Jeg mangler bare en tusch', ville han give os den mest populære tusch, der var på markedet eller i hans butik. Standardkonstruktøren er præcis, hvad den lyder som! Den anden tilgang er at gå ind i en butik og angive, at du vil have en rød markør af XYZ-mærket. Han vil give dig den markør, da du har taget emnet op. Parametrene er således blevet indstillet i dette tilfælde. Og en parameteriseret konstruktør er præcis, hvad det lyder som! Den tredje kræver, at du besøger en butik og erklærer, at du vil have en markør, der ser sådan ud (en fysisk markør på hånden). Butiksejeren vil således bemærke den markør. Han vil give dig en ny markør, når du siger okay. Lav derfor en kopi af den markør. Og det er, hvad en kopikonstruktør gør!

Hvad er kendetegnene for en konstruktør?

  1. Konstruktøren har samme navn som den klasse, den tilhører.
  2. Selvom det er muligt, er konstruktører typisk erklæret i klassens offentlige sektion. Dette er dog ikke et must.
  3. Fordi konstruktører ikke returnerer værdier, mangler de en returtype.
  4. Når vi opretter et klasseobjekt, aktiveres konstruktøren med det samme.
  5. Overbelastede konstruktører er mulige.
  6. Det er ikke tilladt at erklære en virtuel konstruktør.
  7. Man kan ikke arve en konstruktør.
  8. Konstruktøradresser kan ikke henvises til.
  9. Ved allokering af hukommelse foretager konstruktøren implicitte opkald til de nye og slette operatører.

Hvad er en kopikonstruktør?

En medlemsfunktion kendt som en kopikonstruktør initialiserer et element ved hjælp af et andet objekt fra samme klasse - en dybdegående diskussion om Copy Constructors.

Hver gang vi angiver en eller flere ikke-standardkonstruktører (med parametre) for en klasse, skal vi også inkludere en standardkonstruktør (uden parametre), da compileren ikke vil levere en i dette tilfælde. Den bedste praksis er altid at erklære en standardkonstruktør, selvom det ikke er påkrævet.

En reference til et objekt, der tilhører samme klasse, kræves af kopikonstruktøren.

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

Hvad er en destruktor i C++?

En tilsvarende specialmedlemsfunktion til en konstruktør er en destruktor. Konstruktøren opretter klasseobjekter, som ødelægges af destruktoren. Ordet 'destructor' efterfulgt af tilde-symbolet () er det samme som klassenavnet. Du kan kun definere én destruktor ad gangen. En metode til at ødelægge et objekt lavet af en konstruktør er at bruge en destruktor. Destruktorer kan ikke overbelastes som følge heraf. Destruktorer tager ikke imod nogen argumenter og giver ikke noget tilbage. Så snart varen forlader omfanget, ringes den straks op. Destruktorer frigør den hukommelse, der bruges af de objekter, konstruktøren genererede. Destructor vender processen med at skabe ting ved at ødelægge dem.

Det sprog, der bruges til at definere klassens destruktor

 ~ () { } 

Det sprog, der bruges til at definere klassens destruktor uden for den

 : : ~ (){}