Konstruktør i C - Anvendelser og typer af konstruktøren med eksempler

Indholdsfortegnelse:

Anonim

Introduktion til konstruktør i C

En konstruktør i C bruges til hukommelsesstyring af C ++ programmering. Det tillader indbyggede datatyper som int, float og brugerdefinerede datatyper som klasse. Konstruktør i objektorienteret programmering initialiserer variablen for en brugerdefineret datatype. Constructor hjælper med at skabe et objekt. Konstruktørens navn er det samme som objektets navn, men det har ingen returtype. En konstruktør udføres automatisk, når der oprettes et objekt eller et specielt medlem. Det tildeler hukommelsen til det nye oprettede objekt, og det kan overbelastes.

Kode

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

Anvendelse af konstruktøren

  • Det er en speciel metode, der har samme navn som klassens navn og initialiserer objektet, når det oprettes. Så det er enkelt og let at udføre.
  • Det bruges hovedsageligt til hukommelsesstyring. De bruges til at initialisere og fjerne hukommelsesblok, når det ikke længere er påkrævet ved at have nye og slette indstillinger som specificeret af programmereren
  • Compileren opretter en standardkonstruktør, når objektet oprettes. Når du ikke erklærede konstruktøren, ville kompilatoren oprette en. Det er nyttigt, fordi objektet og funktionen i programmet ved, at objektet findes
  • En konstruktør for et objekt oprettes, når en instans er et objekt, der er deklareret. En klasse kan have flere konstruktører til forskellige situationer. Overbelastning af konstruktører øger klassens alsidighed ved at have mange konstruktører i en individuel 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 forskellige værdier.

Typer af konstruktør i C

Konstruktørens hovedtyper forklares som følger,

1. Standardkonstruktør

En standardkonstruktør har ingen parameter, eller den nuværende parameter har standardværdier. Hvis der ikke er nogen brugerdefineret konstruktør i klassen, opretter compileren en ny, hvis nødvendigt, og det kaldes som standardkonstruktør. Dette er et offentligt medlem af klassen. Denne konstruktør har en fuld krop og ingen initialiserer. Standardkonstruktøren indeholder ikke noget specifikt, det tildeler blot hukommelse til objektet. En konstruktør af klasse X er overfladisk, hvis alle følgende udsagn er sandt. Det defineres implicit. Hvis X ikke har virtuelle baseklasser og funktioner. Alle baseklasser og ikke statiske medlemmer af X har trivielle konstruktører.

2. Parameteriserede konstruktører

Den konstruktør, der kan acceptere argumenterne, kaldes Parameteriserede konstruktører. Det kan specificere argumentet, når det er nødvendigt.

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 bruges til at initialisere og deklarere et objekt fra et andet objekt

integer 10(12);

ville definere objekt 10 og på samme tid initialisere det til værdien af ​​12. En anden form for denne erklæring er

integer 10 = 12;

Processen kaldes kopiinitialisering. En kopikonstruktør bruges, hver gang det midlertidige objekt oprettes. Anvendelsen af ​​kopikonstruktør er som følger; Returnering af objekt som funktionsværdi Initialisering af objekt med et andet objekt i samme klasse

Syntaks

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 af konstruktør

Når flere konstruktører bruges i samme klasse, kaldes det Constructor Overloading. Det giver os flere måder at initialisere objekter i en klasse. Det øger fleksibiliteten ved at have flere konstruktører i en enkelt 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-dimensionel konstruktør

Det er som en matrix i struktur og indeholder rækker og kolonner. Det indeholder en matrix af streng, hvor en række repræsenterer en streng og kolonne repræsenterer en strengværdi.

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

Syntaks

char arrayname(x)(y);

hvor 'x' er antallet af rækker 'y' er antallet af kolonner.

Antallet af rækker skal være det samme som antallet af strenge i den matrix. Antallet af kolonner skal være større end eller det samme som længden på strengen, eller den kan være plus en

Eksempel

Hvis der er 8 strenge i array, og længden af ​​den længste streng er 10, defineres arrayet som følger

Char days(8)(11);

6. Privat konstruktør

Det bruges til at oprette et klasseobjekt for en enkelt gang. Det er defineret, at klassen ikke har flere forekomster af klassen. Det er det samme som andre konstruktører, men defineret som privat. Det har kun adgang til objektet i den definerede klasse.

Kode

classroom()
(
private:

Kun den del af programmet og kan kun fås adgang til og defineret i det private afsnit

Konklusion - Konstruktør i C

En konstruktør kan tage nul eller flere parametre. En klasse kan definere en eller mange konstruktører. Det er op til os at beslutte, hvilken konstruktør der skal udføres under objektskabelse ved at videregive en passende argumentliste til konstruktøren ved at indstille standardværdien for konstruktørparameteren. Henvisninger kan ikke bruges på konstruktører, fordi deres adresser ikke kan tages i betragtning. Konstruktører kan ikke erklæres som statiske, konstante eller flygtige.

Anbefalede artikler

Dette er en guide til Constructor i C. Her diskuterer vi brugen af ​​konstruktør, typer af konstruktøren med eksempler, kode og output. Du kan også gennemgå vores andre relaterede artikler for at lære mere-

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