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-
- Kopiera konstruktör i Java
- Arrays in C-programmering
- Konstruktör i Python
- Konstruktör i JavaScript
- C Programmering av matrismultiplikation