Konstruktor v C - Uporaba in vrste konstruktorja s primeri

Kazalo:

Anonim

Uvod o konstruktorju na C

Konstruktor v C se uporablja pri upravljanju pomnilnika pri programiranju C ++. Omogoča vgrajene tipe podatkov, kot so int, float in uporabniško definirani tipi podatkov, na primer razred. Konstruktor v objektno usmerjenem programiranju inicializira spremenljivko uporabniško definirane vrste podatkov. Konstruktor pomaga pri ustvarjanju predmeta. Ime konstruktorja je isto kot ime predmeta, vendar nima povratnega tipa. Konstruktor se samodejno izvede, ko je ustvarjen predmet ali poseben član. Dodeli pomnilnik za nov ustvarjen predmet in ga je mogoče preobremeniti.

Koda

// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)

Uporaba konstruktorja

  • To je posebna metoda, ki ima isto ime kot ime razreda in inicializira objekt, kadar koli je ustvarjen. Torej je enostaven in enostaven za izvedbo.
  • Uporablja se predvsem za upravljanje pomnilnika. Uporabljajo se za inicializacijo in odstranjevanje pomnilniškega bloka, kadar tega ni več potrebno, če imate možnosti New in Delete, kot določa programer
  • Prevajalnik ustvari privzeti konstruktor vsakič, ko je predmet ustvarjen. Ko konstruktorja niste prijavili, bi prevajalnik ustvaril enega. Uporabna je, ker predmet in funkcija v programu vesta, da objekt obstaja
  • Konstruktor za objekt se ustvari, ko je primerek objekt, ki je deklariran. Razred ima lahko več konstruktorjev za različne situacije. Konstrukcijska preobremenitev poveča vsestranskost razreda, saj ima veliko konstruktorjev v posameznem razredu.

Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12

Zato je konstruktor preobremenjen z različnimi vrednostmi.

Vrste konstruktorjev na C

Glavne vrste konstruktorja so razložene,

1. Privzeti konstruktor

Privzeti konstruktor nima parametra ali ima sedanji parameter privzete vrednosti. Če v razredu ni uporabniško definiranega konstruktorja, prevajalnik po potrebi ustvari novega, ki se imenuje kot privzeti konstruktor. To je vroči javni član razreda. Ta konstruktor bo imel celotno telo in brez pobudnika. Privzeti konstruktor ne ponuja ničesar konkretnega, predmetu preprosto dodeli pomnilnik. Konstruktor razreda X je površen, če so vse naslednje trditve resnične. Določena je implicitno. Če X nima virtualnih osnovnih razredov in funkcij. Vsi osnovni razredi in ne statični člani X imajo trivialne konstruktorje.

2. Parametrizirani konstruktorji

Konstruktor, ki lahko sprejme argumente, se imenuje Parameterized constructors. Argument lahko poda, kadar koli je potreben.

Koda

class X (
int i;
public:
void abc(void);
void xyz(void);
// member function definitions
)
X 0b 1;
// default constructor for creating 0b1. hence user can use it,
// implicitly define default constructor is public
// member of the class
0b1. abc();
0b1. xyz();

3. Konstruktor kopiranja

Uporablja se za inicializacijo in razglasitev enega predmeta iz drugega predmeta

integer 10(12);

bi opredelili objekt 10 in ga hkrati inicializirali na vrednost 12. Druga oblika te izjave je

integer 10 = 12;

Postopek se imenuje inicializacija kopiranja. Konstruktor kopij se uporablja vsakič, ko se ustvari začasni objekt. Uporaba konstruktorja kopij je naslednja; Vrnitev predmeta kot vrednosti funkcije Inicializacija predmeta z drugim objektom istega razreda

Sintaksa

class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);

Koda

class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)

4. Preobremenitev konstruktorja

Če se v istem razredu uporablja več konstruktorjev, se imenuje Constructor Overloading. Omogoča nam več načinov za inicializacijo predmetov v razredu. Poveča fleksibilnost z več konstruktorji v enem razredu.

Koda

#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)
#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)
#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)

5. Dvodimenzionalni konstruktor

V strukturi je kot matrika in vsebuje vrstice in stolpce. Vsebuje niz nizov, kjer vrstica predstavlja niz in stolpec predstavlja vrednost niza.

Koda

// overloading class constructors
#include
using namespace std;
class CRectangle
(
int width, height;
public:
CRectangle ();
CRectangle (int, int);
int area (void)
(
return (width*height);
)
);
CRectangle::CRectangle ()
(
width = 7;
height = 5;
)
CRectangle::CRectangle (int a, int b)
(
width = a;
height = b;
)
int main ()
(
CRectangle rect (7, 5);
CRectangle rectb;
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
)

Sintaksa

char arrayname(x)(y);

kjer je 'x' število vrstic 'y' število stebrov.

Število vrstic mora biti enako številu nizov v tem nizu. Številka stolpca mora biti večja ali enaka dolžini niza ali pa je lahko ena ena

Primer

Če je v nizu 8 nizov in je dolžina najdaljšega niza 10, je matrika definirana na naslednji način

Char days(8)(11);

6. Zasebni konstruktor

Uporablja se za enkratno ustvarjanje predmeta razreda. Določeno je, da razred nima več primerkov razreda. Je enako kot drugi konstruktorji, vendar je opredeljen kot zasebni. Dostopa lahko le do predmeta definiranega razreda.

Koda

classroom()
(
private:

Samo tisti del programa in do njega lahko dostopate in definirate samo v zasebnem delu

Zaključek- Konstruktor v C

Konstruktor lahko sprejme ničelne ali več parametrov. Razred lahko definira enega ali več konstruktorjev. Na nas je, da se odločimo, katerega konstruktorja bomo izvedli med ustvarjanjem objekta, tako da konstruktorju posredujemo ustrezen seznam argumentov, tako da nastavimo privzeto vrednost parametra konstruktorja. Kazalnikov na konstruktorjih ni mogoče uporabiti, ker njihovih naslovov ni mogoče upoštevati. Konstruktorjev ni mogoče razglasiti za statične, stabilne ali nestabilne.

Priporočeni članki

To je vodnik za Constructor v C. Tukaj razpravljamo o uporabi konstruktorja, vrstah konstruktorja s primeri, kodo in izhodi. Obiščite lahko tudi druge naše sorodne članke, če želite izvedeti več -

  1. Kopiraj konstruktor v Javi
  2. Nizi v C programiranju
  3. Konstruktor v Pythonu
  4. Konstruktor v JavaScript
  5. C Programiranje množenja matrike