Konstruktör i C - Använder & typer av konstruktören med exempel

Innehållsförteckning:

Anonim

Introduktion till konstruktör i C

En konstruktör i C används i minneshanteringen av C ++ -programmering. Det tillåter inbyggda datatyper som int, float och användardefinierade datatyper som klass. Konstruktör i objektorienterad programmering initierar variabeln för en användardefinierad datatyp. Konstruktör hjälper till med att skapa ett objekt. Konstruktörens namn är samma som objektets namn, men det har ingen returtyp. En konstruktör körs automatiskt när ett objekt eller en speciell medlem skapas. Den fördelar minnet för det nya objektet som skapats och det kan överbelastas.

Koda

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

Användare av konstruktören

  • Det är en speciell metod som har samma namn som klassnamnet och initialiserar objektet när det skapas. Så det är enkelt och enkelt att utföra.
  • Det används främst för minneshantering. De används för att initiera och ta bort minnesblock när det inte längre krävs genom att ha nya och radera alternativ som anges av programmeraren
  • Kompilatorn skapar en standardkonstruktör när objektet skapas. När du inte förklarade konstruktören skulle kompilatorn skapa en. Det är användbart eftersom objektet och funktionen i programmet vet att objektet finns
  • En konstruktör för ett objekt skapas när en instans är ett objekt som deklareras. En klass kan ha flera konstruktörer för olika situationer. Konstruktörens överbelastning ökar klassens mångsidighet genom att ha många konstruktörer i en individuell klass.

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

Därför är konstruktören överbelastad med olika värden.

Typer av konstruktör i C

Konstruktörens huvudtyper förklaras enligt följande,

1. Standardkonstruktör

En standardkonstruktör har ingen parameter eller den aktuella parametern har standardvärden. Om ingen användardefinierad konstruktör finns i klassen skapar kompilatorn en ny om det behövs och det kallas som standardkonstruktör. Detta är en offentlig medlem av klassen. Denna konstruktör kommer att ha en full kaross och ingen initialiserare. Standardkonstruktören innehåller inget specifikt, det fördelar helt enkelt minne till objektet. En konstruktör av klass X är ytlig om alla följande påståenden är sanna. Det definieras implicit. Om X inte har några virtuella basklasser och funktioner. Alla basklasser och inte statiska medlemmar av X har triviala konstruktörer.

2. Parameteriserade konstruktörer

Konstruktören som kan acceptera argumenten kallas Parameteriserade konstruktörer. Den kan specificera argumentet när det behövs.

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. Kopiera konstruktör

Det används för att initialisera och förklara ett objekt från ett annat objekt

integer 10(12);

skulle definiera objekt 10 och samtidigt initialisera det till värdet 12. En annan form av detta uttalande är

integer 10 = 12;

Processen kallas kopieringsinitialisering. En kopieringskonstruktör används när det tillfälliga objektet skapas. Tillämpningen av kopieringskonstruktör är följande; Återlämnande av objekt som funktionsvärde Initiering av objekt av ett annat objekt i samma klass

Syntax

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. Konstruktörens överbelastning

När flera konstruktörer används i samma klass kallas det för överbelastning av konstruktörer. Det ger oss flera sätt att initialisera objekt i en klass. Det ökar flexibiliteten genom att ha flera konstruktörer i en enda klass.

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. Två-dimensionell konstruktör

Det är som en matris i struktur och innehåller rader och kolumner. Den innehåller en rad sträng där en rad representerar en sträng och kolumnen representerar ett strängvärde.

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

Syntax

char arrayname(x)(y);

där 'x' är antalet rader 'y' är antalet kolumner.

Antalet rader bör vara detsamma som antalet strängar i den arrayen. Kolumnens antal bör vara större än eller samma som strängens längd eller det kan vara plus en

Exempel

Om det finns 8 strängar i matrisen och längden på den längsta strängen är 10 definieras matrisen enligt följande

Char days(8)(11);

6. Privat konstruktör

Det används för att skapa ett klassobjekt för en enda gång. Det definieras att klassen inte har flera instanser av klassen. Det är samma som andra konstruktörer men definieras som privata. Den har bara åtkomst till objektet för den definierade klassen.

Koda

classroom()
(
private:

Endast den delen av programmet och kan endast nås och definieras inom det privata avsnittet

Slutsats - Konstruktör i C

En konstruktör kan ta noll eller fler parametrar. En klass kan definiera en eller många konstruktörer. Det är upp till oss att bestämma vilken konstruktör som ska köras under skapandet av objekt genom att skicka en lämplig argumentlista till konstruktören genom att ställa in standardvärdet för konstruktörsparametern. Pekare kan inte användas på konstruktörer eftersom deras adresser inte kan beaktas. Konstruktörer kan inte deklareras som statisk, konst eller flyktig.

Rekommenderade artiklar

Detta är en guide till konstruktör i C. Här diskuterar vi användningen av konstruktör, typer av konstruktören med exempel, kod och utgångar. Du kan också gå igenom våra andra relaterade artiklar för att lära dig mer-

  1. Kopiera konstruktör i Java
  2. Arrays in C-programmering
  3. Konstruktör i Python
  4. Konstruktör i JavaScript
  5. C Programmering av matrismultiplikation