Bevezetés a konstruktorról C
A C konstruktor a C ++ programozás memóriakezelésében használható. Ez lehetővé teszi a beépített adattípusokat, például az int, az úszó és a felhasználó által meghatározott adattípusokat, például az osztály. Az objektum-orientált programozásban a konstruktor inicializálja a felhasználó által meghatározott adattípus változóját. A kivitelező segít egy tárgy létrehozásában. A kivitelező neve megegyezik az objektum nevével, de nincs visszatérési típusa. Egy kivitelező automatikusan végrehajtódik, amikor objektum vagy speciális tag jön létre. A memóriát kiosztja a létrehozott új objektumhoz, és túlterhelhető.
Kód
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
A kivitelező felhasználásai
- Ez egy speciális módszer, amely ugyanazt a nevet tartja, mint az osztály neve, és inicializálja az objektumot, amikor létrehozza. Tehát egyszerű és könnyű végrehajtani.
- Főleg memóriakezelésre használják. Ezeket a memóriablokk inicializálására és eltávolítására használják, amikor már nincs rá szükség a programozó által megadott Új és Törlés opciókkal
- A fordító létrehoz egy alapértelmezett konstruktort az objektum létrehozásakor. Ha nem hirdette ki a konstruktort, a fordító létrehoz egy egyet. Ez azért hasznos, mert az objektum és a funkció a programban tudja, hogy az objektum létezik
- Egy objektum konstruktora akkor jön létre, ha egy példány egy deklarált objektum. Egy osztálynak több konstruktora lehet, különböző helyzetekben. A konstruktorok túlterhelése növeli az osztály sokoldalúságát, mivel sok konstruktorral rendelkezik egy adott osztályban.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Ezért a konstruktor túlterhelt-e különböző értékekkel.
C konstruktor típusai
A konstruktor főbb típusait az alábbiakban magyarázzuk:
1. Alapértelmezett kivitelező
Az alapértelmezett konstruktornak nincs paramétere, vagy a jelenlegi paraméternek alapértelmezett értékei vannak. Ha az osztályban nincs felhasználó által definiált konstruktor, akkor a fordító szükség esetén létrehoz egy újat, amelyet alapértelmezett konstruktornak hívnak. Ez egy inline nyilvános tag az osztályban. Ennek a konstruktornak teljes teste lesz és nincs inicializálója. Az alapértelmezett konstruktor nem ad semmi konkrétot, egyszerűen memóriát allokál az objektumhoz. Az X osztályú konstruktor felületes, ha a következő állítások igazak. Ez implicit módon van meghatározva. Ha X-nek nincs virtuális bázisosztálya és funkciója. Az X összes bázisosztálya és nem statikus tagjai triviális konstruktorokkal rendelkeznek.
2. Paraméterezett konstruktorok
Az argumentumokat elfogadó konstruktort Paraméterezett konstruktoroknak nevezzük. Megadhatja az érvet, amikor csak szükséges.
Kód
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. Másoló kivitelező
Az egyik objektum inicializálására és deklarálására szolgál
integer 10(12);
definiálja a 10 objektumot, és ezzel egyidejűleg inicializálja azt 12 értékre. Ennek az állításnak egy másik formája
integer 10 = 12;
A folyamatot másolás inicializálására hívják. Az átmeneti objektum létrehozásakor egy másolat-kivitelezőt használunk. A másolatkészítő alkalmazása a következő: Objektum visszatérése funkcióértékként Az objektum inicializálása ugyanabba az osztályba tartozó másik objektummal
Szintaxis
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
Kód
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. A konstruktor túlterhelése
Ha ugyanabban az osztályban több konstruktort használnak, akkor azt konstruktor túlterhelésnek hívják. Többféle lehetőséget kínál az objektumok inicializálására egy osztályban. Növeli a rugalmasságot azáltal, hogy egyetlen osztályban több konstruktor van.
Kód
#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. Kétdimenziós konstruktor
Olyan, mint egy tömb szerkezetében, sorokat és oszlopokat tartalmaz. Egy sor tömböt tartalmaz, ahol egy sor egy húrot, az oszlop pedig egy húr értéket képvisel.
Kód
// 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;
)
Szintaxis
char arrayname(x)(y);
ahol „x” az „y” sorok száma az oszlopok száma.
A sorok számának meg kell egyeznie az adott tömb húrjainak számával. Az oszlop számának nagyobbnak kell lennie, vagy nagyobbnak kell lennie, mint a karakterlánc hossza, vagy lehet plusz egy
Példa
Ha 8 karakterlánc van a tömbben, és a leghosszabb karakterlánc hossza 10, akkor a tömböt a következőképpen definiáljuk
Char days(8)(11);
6. Magánszereplő
Ez egy osztályobjektum létrehozására szolgál egyszerre. Meghatározva, hogy az osztálynak nincs több példánya az osztályból. Ugyanaz, mint más konstruktorok, de magánként definiált. Csak a meghatározott osztály objektumához fér hozzá.
Kód
classroom()
(
private:
Csak a program azon része, és csak a privát részben érhető el és definiálható
Következtetés - C konstruktor
A konstruktor nullát vagy több paramétert vehet igénybe. Egy osztály meghatározhat egy vagy több konstruktort. Rajtunk múlik, hogy eldöntse, melyik konstruktort hajtja végre az objektum létrehozása során, és átadja a megfelelő argumentumlistát az építőnek az alapértelmezett érték megadásával az építő paraméterhez. A mutatók nem használhatók konstruktorokon, mert a címeik nem vehetők figyelembe. A konstruktorokat nem lehet statikusnak, const vagy illékonynak nyilvánítani.
Ajánlott cikkek
Ez egy útmutató a Constructornak C-ben. Itt tárgyaljuk a konstruktor használatát, a konstruktor típusait példákkal, kóddal és kimenetekkel. Megnézheti más kapcsolódó cikkeinket, hogy többet megtudjon-
- Másoló kivitelező Java-ban
- Tömbök a C programozásban
- Kivitelező Pythonban
- Kivitelező a JavaScript-ben
- C Programozó mátrix szorzás