Konstruktor u C - Upotrebe i vrste konstruktora s primjerima

Sadržaj:

Anonim

Uvod o konstruktoru u C

Konstruktor na C koristi se za upravljanje memorijom programa C ++. Omogućuje ugrađene tipove podataka poput int, float i korisnički definirane vrste podataka, poput klase. Konstruktor u objektno orijentiranom programiranju inicijalizira varijablu korisnički definiranog tipa podataka. Konstruktor pomaže u stvaranju objekta. Naziv konstruktora jednak je imenu objekta, ali nema povratnu vrstu. Konstruktor se automatski pokreće kada se stvori objekt ili poseban član. Ona raspoređuje memoriju za novi predmet koji je stvoren i može se preopteretiti.

Kodirati

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

Upotrebe konstruktora

  • To je posebna metoda koja ima isti naziv kao i naziv klase i inicijalizira objekt kad god ga stvori. Dakle, to je jednostavno i lako izvršiti.
  • Koristi se uglavnom za upravljanje memorijom. Koriste se za inicijalizaciju i uklanjanje memorijskog bloka kad više nije potrebno postojanjem opcija Nove i Izbriši kako je odredio programer
  • Kompajler stvara zadani konstruktor kad god se stvori objekt. Kad niste prijavili konstruktor, prevodilac bi stvorio jedan. Korisno je jer objekt i funkcija u programu znaju da objekt postoji
  • Konstruktor za objekt stvara se kada je instanca objekt koji je deklariran. Razred može imati više konstruktora za različite situacije. Preopterećenje konstruktora povećava svestranost klase što ima mnogo konstruktora u pojedinačnoj klasi.

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

Stoga je konstruktor preopterećen različitim vrijednostima.

Vrste konstruktora u C

Glavne vrste konstruktora objašnjavaju se kako slijedi,

1. Zadani konstruktor

Zadani konstruktor nema parametar ili sadašnji parametar ima zadane vrijednosti. Ako u klasi ne postoji konstruktor definiran od strane korisnika, prevodilac kreira novi ako je potrebno i zove se zadani konstruktor. Ovo je inline javni član klase. Ovaj će konstruktor imati potpuno tijelo i bez inicijatora. Zadani konstruktor ne pruža ništa konkretno, on jednostavno dodjeljuje memoriju objektu. Konstruktor klase X površan je ako su sve sljedeće izjave istinite. Definirana je implicitno. Ako X nema virtualne osnovne klase i funkcije. Sve osnovne klase, a ne statički članovi X, imaju trivijalne konstruktore.

2. Parameterizirani konstruktori

Konstruktor koji može prihvatiti argumente naziva se Parameterizirani konstruktor. Može odrediti argument kad god je potreban.

Kodirati

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

Koristi se za inicijalizaciju i deklariranje jednog objekta iz drugog objekta

integer 10(12);

definirali bi objekt 10 i istovremeno ga inicijalizirali u vrijednost 12. Drugi oblik ove izjave je

integer 10 = 12;

Proces se naziva inicijalizacija kopiranja. Konstruktor kopiranja koristi se kad god se stvori privremeni objekt. Primjena konstruktora kopiranja je sljedeća; Povratak objekta kao vrijednost funkcije Inicijalizacija objekta drugim objektom iste klase

Sintaksa

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

Kodirati

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

4. Preopterećenje konstruktora

Kada se koristi više konstruktora u istoj klasi, tada se to naziva Preopterećenje konstruktora. Omogućuje nam više načina inicijalizacije objekata u razredu. Povećava fleksibilnost tako što ima više konstruktora u jednoj klasi.

Kodirati

#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

Po strukturi je poput niza i sadrži retke i stupce. Sadrži niz stringova gdje red predstavlja niz, a stupac predstavlja vrijednost niza.

Kodirati

// 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);

gdje je 'x' broj redova 'y' je broj stupaca.

Broj redaka trebao bi biti isti kao i niz žica u tom nizu. Broj stupca trebao bi biti veći ili jednak duljini niza ili može biti plus jedan

Primjer

Ako je u nizu 8 niza i duljina najdužeg niza je 10, niz se definira na sljedeći način

Char days(8)(11);

6. Privatni konstruktor

Koristi se za stvaranje predmeta klase za jedan put. Definirano je da klasa nema više instanci klase. To je isto kao i ostali konstruktori, ali je definirano kao privatno. Može pristupiti samo objektima definirane klase.

Kodirati

classroom()
(
private:

Samo tom dijelu programa i njemu se može pristupiti i definirati samo unutar privatnog odjeljka

Zaključak- Konstruktor u C

Konstruktor može uzeti null ili više parametara. Klasa može definirati jednog ili više konstruktora. Na nama je da odlučimo koji konstruktor izvršiti tijekom stvaranja objekta, prosljeđivanjem odgovarajućeg popisa argumenata konstruktoru postavljanjem zadane vrijednosti za parametar konstruktora. Pokazivači se ne mogu koristiti na konstruktorima jer se njihove adrese ne mogu uzeti u obzir. Konstruktori se ne mogu proglasiti statičkim, postojanim ili nestabilnim.

Preporučeni članci

Ovo je vodič za Constructor u C. Ovdje ćemo raspraviti upotrebu konstruktora, vrste konstruktora s primjerima, kodom i izlazima. Možete i proći kroz naše druge povezane članke da biste saznali više -

  1. Kopiraj konstruktor u Javu
  2. Nizovi u C programiranju
  3. Konstruktor u Pythonu
  4. Konstruktor u JavaScriptu
  5. C Programiranje množenja matrice