Конструктор у Ц - Употребе и врсте конструктора са примерима

Преглед садржаја:

Anonim

Увод о конструктору на Ц

Конструктор на Ц користи се у управљању меморијом Ц ++ програма. Омогућује уграђене типове података као што су инт, флоат и кориснички дефинирани типови података, попут класе. Конструктор у објектно оријентираном програмирању иницијализира варијаблу кориснички дефинираног типа података. Конструктор помаже у стварању објекта. Име конструктора је исто као и име објекта, али нема повратни тип. Конструктор се аутоматски покреће када се створи објект или посебан члан. Она распоређује меморију за нови предмет креиран и може се преоптеретити.

Код

// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)

Употребе конструктора

  • То је посебна метода која има исти назив као и име класе и иницијализира објект кад год се креира. То је једноставно и лако извршити.
  • Користи се углавном за управљање меморијом. Користе се за иницијализацију и уклањање меморијског блока када више није потребно постојањем опција Нове и Обришите како је одредио програмер
  • Компајлер креира задани конструктор кад год се објект креира. Када нисте декларирали конструктор, преводилац би створио један. Корисно је јер објект и функција у програму знају да објект постоји
  • Конструктор за објект се ствара када је инстанца објект који је декларисан. Разред може имати више конструктора за различите ситуације. Преоптерећење конструктора повећава свестраност класе тако што има много конструктора у појединачној класи.

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. Стандардни конструктор

Задани конструктор нема параметар или садашњи параметар има задане вредности. Ако у класи не постоји конструктор дефинисан од стране корисника, преводилац креира нови ако је потребно и зове се задани конструктор. Ово је инлине јавни члан класе. Овај конструктор ће имати потпуно тело и без иницијализатора. Задани конструктор не пружа ништа конкретно, он једноставно додељује меморију објекту. Конструктор класе Кс је површан ако су све следеће изјаве тачне. Дефинише се имплицитно. Ако Кс нема виртуелне основне класе и функције. Све основне класе, а не статички чланови Кс, имају тривијалне конструкторе.

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. Преоптерећење конструктора

Када се користи више конструктора у истој класи, то се назива Цонструцтор Оверлоадинг. Даје нам више начина за иницијализацију објеката у класи. Повећава флексибилност тако што има више конструктора у једној класи.

Код

#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);

где је 'к' број редова 'и' је број ступаца.

Број редова треба да буде исти као и број жица у том низу. Број колоне треба да буде већи или исти дужини низа или може бити плус један

Пример

Ако у низу постоји 8 низова, а дужина најдужег низа је 10, низ се дефинира на сљедећи начин

Char days(8)(11);

6. Приватни конструктор

Користи се за креирање предмета класе за један пут. Дефинисано је да класа нема више инстанци класе. То је исто као и остали конструктори, али је дефинисан као приватни. Може приступити само објекту дефиниране класе.

Код

classroom()
(
private:

Само том дијелу програма и њему се може приступити и дефинирати само у приватном дијелу

Закључак - Конструктор у Ц

Конструктор може узети нулл или више параметара. Класа може дефинисати једног или више конструктора. На нама је да одлучимо који конструктор извршити током креирања објекта, просљеђивањем одговарајуће листе аргумената конструктору постављањем задане вриједности за параметар конструктора. Показивачи се не могу користити на конструкторима јер се њихове адресе не могу узети у обзир. Конструктори се не могу прогласити статичким, постојаним или нестабилним.

Препоручени чланци

Ово је водич за Конструктор у Ц. Овде разматрамо употребу конструктора, врсте конструктора са примерима, кодом и излазима. Можете и да прођете кроз наше друге сродне чланке да бисте сазнали више -

  1. Копирај конструктор у Јава
  2. Низови у Ц програмирању
  3. Конструктор у Питхон-у
  4. Конструктор у ЈаваСцрипт-у
  5. Ц Програмирање множења матрице