Konstruktør i C - Bruker og typer konstruktør med eksempler

Innholdsfortegnelse:

Anonim

Introduksjon om konstruktør i C

En konstruktør i C brukes i minnestyringen av C ++ programmering. Det tillater innebygde datatyper som int, float og brukerdefinerte datatyper som klasse. Konstruktør i objektorientert programmering initialiserer variabelen til en brukerdefinert datatype. Konstruktør hjelper til med å lage et objekt. Navnet på konstruktøren er det samme som navnet på objektet, men det har ingen returtype. En konstruktør utføres automatisk når et objekt eller et spesielt medlem opprettes. Den tildeler minnet til det nye objektet som er opprettet, og det kan bli overbelastet.

Kode

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

Bruker av konstruktøren

  • Det er en spesiell metode som har samme navn som klassens navn og initialiserer objektet når det opprettes. Så det er enkelt og enkelt å utføre.
  • Den brukes hovedsakelig til minnehåndtering. De brukes til å initialisere og fjerne minneblokk når det ikke lenger er nødvendig ved å ha nye og slette alternativer som spesifisert av programmereren
  • Kompilatoren oppretter en standardkonstruktør når objektet opprettes. Når du ikke erklærte konstruktøren, ville kompilatoren lage en. Det er nyttig fordi objektet og funksjonen i programmet vet at objektet eksisterer
  • En konstruktør for et objekt opprettes når en forekomst er et objekt som er deklarert. En klasse kan ha flere konstruktører for forskjellige situasjoner. Overbelastning av konstruktører øker allsidigheten til klassen ved å ha mange konstruktører i en individuell klasse.

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

Derfor er konstruktøren overbelastet med forskjellige verdier.

Typer konstruktør i C

Hovedtypene til konstruktøren blir forklart som følger,

1. Standardkonstruktør

En standardkonstruktør har ingen parameter, eller den nåværende parameteren har standardverdier. Hvis det ikke er noen brukerdefinert konstruktør i klassen, oppretter kompilatoren en ny om nødvendig, og det kalles som standardkonstruktør. Dette er et offentligt medlem av klassen. Denne konstruktøren vil ha en hel kropp og ingen initialisator. Standardkonstruktøren gir ikke noe spesifikt, den tildeler ganske enkelt minne til objektet. En konstruktør av klasse X er overfladisk hvis alle følgende påstander er sanne. Det er definert implisitt. Hvis X ikke har virtuelle baseklasser og funksjoner. Alle baseklassene og ikke statiske medlemmer av X har trivielle konstruktører.

2. Parameteriserte konstruktører

Konstruktøren som kan godta argumentene kalles Parameteriserte konstruktører. Den kan spesifisere argumentet når det trengs.

Kode

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. Kopier konstruktør

Det brukes til å initialisere og erklære ett objekt fra et annet objekt

integer 10(12);

ville definere objekt 10 og samtidig initialisere det til verdien av 12. En annen form for denne uttalelsen er

integer 10 = 12;

Prosessen kalles kopieringsinitiering. En kopikonstruktør brukes når det midlertidige objektet opprettes. Bruken av kopikonstruktør er som følger; Returnering av objekt som funksjonsverdi Initialisering av objekt av et annet objekt i samme klasse

syntax

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

Kode

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

4. Overbelastning av konstruktør

Når flere konstruktører brukes i samme klasse, kalles det Constructor Overloading. Det gir oss flere måter å initialisere objekter i en klasse. Det øker fleksibiliteten ved å ha flere konstruktører i en klasse.

Kode

#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. To-dimensjonal konstruktør

Det er som en matrise i struktur og inneholder rader og kolonner. Den inneholder en rekke strenger der en rad representerer en streng og kolonne representerer en strengverdi.

Kode

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

syntax

char arrayname(x)(y);

der 'x' er antall rader 'y' er antall kolonner.

Antall rader skal være det samme som antall strenger i den arrayen. Antallet på kolonnen skal være større enn eller det samme som lengden på strengen, eller den kan være pluss en

Eksempel

Hvis det er 8 strenger i matrisen og lengden på den lengste strengen er 10, er arrayen definert som følger

Char days(8)(11);

6. Privat konstruktør

Det brukes til å lage et objekt av klasse for en gang. Det er definert at klassen ikke har flere forekomster av klassen. Det er det samme som andre konstruktører, men definert som private. Den får bare tilgang til objektet til den klassen som er definert.

Kode

classroom()
(
private:

Bare den delen av programmet og det er bare tilgang til og definert i den private delen

Konklusjon- Konstruktør i C

En konstruktør kan ta null eller flere parametere. En klasse kan definere en eller mange konstruktører. Det er opp til oss å bestemme hvilken konstruktør som skal utføres under objektskaping, ved å gi en passende argumenteliste til konstruktøren ved å sette standardverdien for konstruktørparameteren. Pekere kan ikke brukes på konstruktører fordi adressene deres ikke kan vurderes. Konstruktører kan ikke deklareres som statiske, konstante eller flyktige.

Anbefalte artikler

Dette er en guide til Constructor i C. Her diskuterer vi bruk av konstruktør, typer konstruktør med eksempler, kode og utganger. Du kan også gå gjennom andre relaterte artikler for å lære mer-

  1. Kopier konstruktør i Java
  2. Arrays in C-programmering
  3. Konstruktør i Python
  4. Konstruktør i JavaScript
  5. C Programmering av matrixmultiplikasjon