Конструктори на клас C ++

C Class Constructors



Конструкторите са като функции. Те се използват за инициализиране на стойностите и обектите на класа. Тези конструктори се инициират, когато обектът на клас е създаден. Конструкторът директно не връща никаква стойност. За да получим стойността на конструктора, трябва да опишем отделна функция, тъй като конструкторът няма никакъв тип връщане. Конструкторът се различава от простата функция по различни начини. Конструктор се създава, когато обектът се генерира. Той е дефиниран в публичния сегмент на класа.

В тази статия ще разгледаме всички тези типове конструктори с примери.







Пример 1

Това е илюстрация на конструктор по подразбиране. Както знаем, че конструкторите по подразбиране се създават автоматично, когато създаваме обект от клас. Това се нарича неявно създаване. Конструкторите са със същото име, което е името на класа. Помислете за файл с код на c ++ на конструктора, тъй като знаем, че класът има две опции, частна и публична. Частната част съдържа променливите от данни, докато публичната част е за функциите, извлечени от всеки обект. Така че конструкторът също е дефиниран в публичната част.



Цяло число()

{

х=петдесет;

и=двайсет;

};

В този конструктор стойностите се присвояват на променливите. Ако искаме да извлечем стойностите като изход, трябва да ги отпечатаме в основната програма.







След дефиниране на конструктора, класът се затваря. Докато влизаме в основната програма, ще отпечатваме стойностите, като използваме обект. Обектът винаги има достъп до конструктори, тъй като това са частите на класа. Създаването на обекти е толкова просто. Това става, като го въведете с името на класа. Това е цяло число в този пример. Стойността ще бъде извлечена чрез метода на точка. т.е. a.x.

Можем да видим изхода на изходния код от терминала в Ubuntu. Подходът, използван за получаване на продукцията, е доста лесен. Първо кодът се компилира, а след това се изпълнява. Използваме компилатора G ++ за процеса на компилиране. Точно както в случая на C, ние използваме GCC.



$ G++ -или filec filec.° С

./filec

-O се използва за запазване на изхода във файла.

Пример 2

В тази илюстрация ще обясним параметризираните конструктори. За разлика от предишния пример, можем също да предадем аргументите на конструкторите от основната програма. Когато обектът се генерира, тези стойности автоматично се предават на променливите, присъстващи в конструктора, за да получат стойността. Някои от употребите на параметризирани конструктори са.

  • Използва се за инициализиране на различни променливи с различни стойности в конструкторите, когато се инициализира.
  • Използва се при претоварване на конструктора. Това е определено по -късно в статията.

Сега нека разгледаме описанието, което описахме, за да разработим тази концепция. Класът има името integer, така че определено името на конструктора също ще бъде същото. В параметрите на конструктора има две стойности на цели числа. Те се инициализират, за да приемат стойностите, изпратени от основната програма като извикване на функция.

Цяло число( intх,intи)

{

ДА СЕ=х;

Б=и;

};

В предишния пример на променливите вътре в конструктора бяха дадени стойностите. Докато в този конструктор променливите се присвояват с променливите със стойността.

Ако искаме да вземем дисплей, трябва да дефинираме функция, която ще върне стойността, тъй като не е възможно да се получи достъп до тази инициализирана променлива директно от конструктора.

intgetX()

{

връщанеда се;

};

Сега ще видим основната част от програмата. Тук, когато обектът е създаден, можете да видите стойностите в раздела за параметри.

Цело число v(70,55); {неявно}

цяло число v=цяло число(10,петнадесет); {изрично}

И за да покажем резултата, ще извикаме функциите, създадени вътре в класа, като използваме обекта. v.getx ().

Методът за извличане на записи е същият, както беше представен по -рано.

Пример 3

Този пример се занимава с копиране на конструктор на клас. Копиран конструктор се използва за инициализиране на обекта с друг обект от подобен клас, към който принадлежи. Този конструктор копира данните, присъстващи в един обект, в другия. Параметрите на този конструктор съдържат адреса на обект от класа. Помислете за дадените примери, в които сме въвели две променливи от едни и същи типове данни, така че те да имат достъп до всяка функция в класа. Конструкторът ще получи стойностите чрез променливата. В същото време копираният конструктор ще получи само обекта. И с помощта на този обект стойностите ще бъдат извлечени.

Стена(стена&obj)

{

Дължина=obj.дължина;

Височина=obj.височина;

}

Трябва да изчислим площ, така че функцията за това изчисление е дефинирана тук. Това ще върне стойността към основната функция, когато бъде извикана. Сега ще наблюдаваме основната програма на кода

Извикването на функцията на копирания конструктор ще бъде така.

Стена на стената 2=стена1;

Обектът извиква копирания конструктор и данните през първия обект се копират чрез него. Освен това ще извикаме функцията за изчисляване на площта и през двата обекта.

От изхода можете да видите, че резултатът от двата конструктора е един и същ. Това означава, че всички данни са копирани от обекта успешно.

Пример 4

Това е илюстрация на претоварване на конструктора. Това се случва, когато трябва да използваме повече от една функция вътре в класа. Претоварването на конструктора следва инструкциите на параметризираните конструктори. Всички конструктори в класа имат подобно име като класа. Но на всеки от конструкторите са зададени различни параметри. Всеки конструктор се извиква според аргумента, когато създаваме обекта.

Помислете за дадения пример, в който сме използвали три конструктора. Единият е без никакъв аргумент. Вторият е с един аргумент, докато третият е с два аргумента. Тази илюстрация е подобна на предходната. Докато изчисляваме площ в отделната функция, описана вътре в класа.

// Конструктор с два аргумента

форма(intх,intи)

{

да се=х;

б=и;

};

Сега, преминавайки към основната програма, можем да видим, че когато инициираме обекта на класа, конструкторът без аргумент се извиква по подразбиране. Сега трябва да извикаме други конструктори с различни обекти с различни аргументи.

Форма s;

Форма s2(8);

Форма s3(4,2);

Функцията, чрез която можем да покажем стойността, се извиква чрез същия създаден обект.

За да видите изхода, ще използваме същия метод на командния терминал, като компилираме и изпълним кода, присъстващ във файла.

От изхода можем да видим, че отговорът е един и същ за всеки конструктор.

Заключение

В този урок видяхме основите на конструкторите и техните функционалности, включително как да ги претоварваме. Конструкторите се използват за инициализиране на променливите със стойностите.