Úvod do konstruktoru v C
Konstruktor v C se používá při správě paměti programování v C ++. Umožňuje vestavěné datové typy jako int, float a uživatelem definované datové typy, jako je třída. Konstruktor v objektově orientovaném programování inicializuje proměnnou uživatelem definovaného datového typu. Konstruktor pomáhá při vytváření objektu. Jméno konstruktoru je stejné jako jméno objektu, ale nemá žádný návratový typ. Konstruktor se provede automaticky, když je vytvořen objekt nebo speciální člen. Přiděluje paměť pro nový vytvořený objekt a může být přetížen.
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;
)
Použití konstruktoru
- Je to speciální metoda, která drží stejný název jako název třídy a inicializuje objekt, kdykoli je vytvořen. Je tedy jednoduché a snadné provedení.
- Používá se hlavně pro správu paměti. Používají se k inicializaci a odstranění paměťového bloku, pokud již není vyžadován pomocí možností Nové a Smazat, jak je stanoveno programátorem
- Kompilátor vytvoří výchozí konstruktor při každém vytvoření objektu. Když jste nevyhlásili konstruktora, kompilátor by vytvořil jeden. Je to užitečné, protože objekt a funkce v programu ví, že objekt existuje
- Konstruktor pro objekt se vytvoří, když je instance deklarovaným objektem. Třída může mít více konstruktérů pro různé situace. Přetížení konstruktorů zvyšuje všestrannost třídy tím, že má mnoho konstruktérů v jednotlivé třídě.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Konstruktor je proto přetížen různými hodnotami.
Typy konstruktorů v C
Hlavní typy konstruktéra jsou vysvětleny následovně:
1. Výchozí konstruktor
Výchozí konstruktor nemá žádný parametr nebo současný parametr má výchozí hodnoty. Pokud ve třídě není žádný konstruktor definovaný uživatelem, kompilátor v případě potřeby vytvoří nový, který se nazývá výchozí konstruktor. Toto je inline veřejný člen třídy. Tento konstruktor bude mít celé tělo a žádný inicializátor. Výchozí konstruktor neposkytuje nic konkrétního, jednoduše přiděluje objektu paměť. Konstruktor třídy X je povrchní, jsou-li všechna následující tvrzení pravdivá. Je definována implicitně. Pokud X nemá žádné virtuální základní třídy a funkce. Všechny základní třídy a ne statické členy X mají triviální konstruktéry.
2. Parametrizované konstruktory
Konstruktor, který dokáže argumenty přijmout, se nazývá Parametrizované konstruktory. Může specifikovat argument, kdykoli je to potřeba.
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. Kopírovat konstruktor
Slouží k inicializaci a deklaraci jednoho objektu z jiného objektu
integer 10(12);
by definoval objekt 10 a současně jej inicializoval na hodnotu 12. Jiná forma tohoto prohlášení je
integer 10 = 12;
Tento proces se nazývá inicializace kopie. Konstruktor kopie se používá při každém vytvoření dočasného objektu. Aplikace konstruktoru kopií jsou následující; Návrat objektu jako funkce Inicializace objektu jiným objektem stejné třídy
Syntax
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. Přetížení konstruktoru
Pokud je ve stejné třídě použito více konstruktorů, nazývá se to Konstruktor přetížení. To nám dává několik způsobů, jak inicializovat objekty ve třídě. Zvyšuje flexibilitu tím, že má více konstruktérů v jedné třídě.
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. Dvourozměrný konstruktor
Je to jako pole ve struktuře a obsahuje řádky a sloupce. Obsahuje pole řetězce, kde řádek představuje řetězec a sloupec představuje hodnotu řetězce.
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;
)
Syntax
char arrayname(x)(y);
kde 'x' je počet řádků 'y' je počet sloupců.
Počet řádků by měl být stejný jako počet řetězců v tomto poli. Číslo sloupce by mělo být větší nebo stejné jako délka řetězce nebo může být plus jeden
Příklad
Pokud je v poli 8 řetězců a délka nejdelšího řetězce je 10, je pole definováno následovně
Char days(8)(11);
6. Soukromý konstruktér
Používá se k vytvoření objektu třídy pro jeden čas. Je definováno, že třída nemá více instancí třídy. Je stejný jako ostatní konstruktéři, ale je definován jako soukromý. Má přístup pouze k objektu definované třídy.
Kód
classroom()
(
private:
Pouze ta část programu a přístupná a definovaná pouze v soukromé sekci
Závěr - Konstruktor v C
Konstruktor může mít nulové nebo více parametrů. Třída může definovat jednoho nebo více konstruktérů. Je na nás, abychom rozhodli, který konstruktor se má během vytváření objektu provést, a to předáním příslušného seznamu argumentů konstruktoru nastavením výchozí hodnoty pro parametr konstruktoru. Ukazatele nelze použít na konstruktorech, protože jejich adresy nelze zohlednit. Konstruktory nelze prohlásit za statické, konstantní nebo těkavé.
Doporučené články
Toto je průvodce Constructorem v C. Zde diskutujeme použití konstruktoru, typy konstruktoru s příklady, kódem a výstupy. Další informace naleznete také v dalších souvisejících článcích.
- Kopírovat konstruktor v Javě
- Pole v programování v C
- Konstruktor v Pythonu
- Konstruktor v JavaScriptu
- C Programovací násobení matic