Въведение в Конструктора в С
Конструктор в C се използва в управлението на паметта на C ++ програмиране. Той позволява вградени типове данни като int, float и дефинирани от потребителя типове данни като клас. Конструктор в обектно-ориентираното програмиране инициализира променливата от дефиниран от потребителя тип данни. Конструктор помага при създаването на обект. Името на конструктора е същото като името на обекта, но няма връщащ тип. Конструктор се изпълнява автоматично, когато се създаде обект или специален член. Той разпределя паметта за създадения нов обект и той може да бъде претоварен.
код
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
Използване на конструктора
- Това е специален метод, който държи същото име като името на клас и инициализира обекта винаги, когато е създаден. Така че е лесно и лесно за изпълнение.
- Използва се главно за управление на паметта. Те се използват за инициализиране и премахване на блок с памет, когато вече не се изисква чрез опции New и Delete, както е посочено от програмиста
- Компилаторът създава конструктор по подразбиране, когато обектът е създаден. Когато не декларирате конструктора, компилаторът ще създаде такъв. Полезно е, защото обектът и функцията в програмата знае, че обектът съществува
- Конструктор за обект се създава, когато екземпляр е обект, който е деклариран. Един клас може да има множество конструктори за различни ситуации. Претоварването на конструктора увеличава гъвкавостта на класа, като има много конструктори в отделен клас.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Следователно конструкторът е претоварен с различни стойности.
Видове конструктор в С
Основните типове конструктор се обясняват по следния начин,
1. Конструктор по подразбиране
Конструкторът по подразбиране няма параметър или настоящият параметър има стойности по подразбиране. Ако в клас не присъства конструктор, дефиниран от потребителя, компилаторът създава нов, ако е необходимо, и се нарича като конструктор по подразбиране. Това е вграден публичен член на класа. Този конструктор ще има пълно тяло и без инициализатор. Конструкторът по подразбиране не предоставя нищо конкретно, той просто разпределя памет на обекта. Конструктор от клас X е повърхностен, ако всички следващи твърдения са верни. Определя се неявно. Ако X няма виртуални базови класове и функции. Всички базови класове, а не статични членове на X имат тривиални конструктори.
2. Параметризирани конструктори
Конструкторът, който може да приеме аргументите, се нарича Параметризирани конструктори. Той може да посочи аргумента, когато е необходимо.
код
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. Конструктор за копиране
Използва се за инициализиране и деклариране на един обект от друг обект
integer 10(12);
би дефинирал обект 10 и в същото време го инициализира до стойността 12. Друга форма на това изявление е
integer 10 = 12;
Процесът се нарича инициализация на копието. Конструктор за копиране се използва, когато временният обект е създаден. Приложението на конструктора на копия е, както следва; Връщане на обект като стойност на функцията Инициализация на обект от друг обект от същия клас
Синтаксис
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
код
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. Претоварване на конструктора
Когато се използват множество конструктори в един и същи клас, тогава той се нарича Constructor Overloading. Дава ни множество начини да инициализираме обекти в клас. Той увеличава гъвкавостта, като има множество конструктори в един клас.
код
#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. Двуизмерен конструктор
Тя е като масив по структура и съдържа редове и колони. Той съдържа масив от низове, където редът представлява низ и колона представлява стойност на низ.
код
// 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;
)
Синтаксис
char arrayname(x)(y);
където 'x' е броят на редовете 'y' е броят на колоните.
Броят на редовете трябва да е същият като броя на низовете в този масив. Броят на колоната трябва да бъде по-голям или същия на дължината на низа или може да бъде плюс една
пример
Ако има 8 низа в масива и дължината на най-дългия низ е 10, масивът се дефинира както следва
Char days(8)(11);
6. Частен конструктор
Използва се за създаване на обект от клас за един път. Определено е, че класът няма множество екземпляри на класа. То е същото като другите конструктори, но е определено като частно. Той има достъп само до определения обект от този клас.
код
classroom()
(
private:
Само тази част от програмата и може да бъде достъпна и дефинирана само в частния раздел
Заключение - Конструктор в С
Конструктор може да приеме нула или повече параметри. Класът може да дефинира един или много конструктори. От нас зависи да решим кой конструктор да изпълним по време на създаването на обект, като предадем подходящ списък на аргументи на конструктора, като зададем стойността по подразбиране за параметъра конструктор. Указателите не могат да се използват за конструктори, тъй като техните адреси не могат да бъдат разглеждани. Конструкторите не могат да бъдат декларирани като статични, const или променливи.
Препоръчителни статии
Това е ръководство за Constructor в C. Тук обсъждаме използването на конструктор, типовете конструктор с примери, код и изходи. Можете също да разгледате и другите ни свързани статии, за да научите повече-
- Копиране на конструктор на Java
- Масиви в C програмиране
- Конструктор в Python
- Конструктор в JavaScript
- C Матрично умножение на програмиране