Konstruktor C-ben A konstruktor felhasználása és típusai példákkal

Tartalomjegyzék:

Anonim

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-

  1. Másoló kivitelező Java-ban
  2. Tömbök a C programozásban
  3. Kivitelező Pythonban
  4. Kivitelező a JavaScript-ben
  5. C Programozó mátrix szorzás