Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Конструктор түрлері






Бір класста бірнеше конструктор болуы мү мкін. Конструкторлардың ү ш тү рі бар:

· Қ алыпты жағ дайда конструкторлардың параметрлері болмайды. Егер класстың қ ұ рамында бірде-бір конструктор болмаса, онда компилятор автоматты тү рде бір конструкторды қ ұ рады. Оның қ ызметі - класс объектісін қ ұ ру кезде жады бө лу.

· Аргументі бар конструктор объектті қ ұ ру мезгілінде инициализациялауғ а мү мкіндік береді (ә ртү рлі функцияларды шақ ыру, динамикалық жады бө лу, айнымалыларғ а бастапқ ы мә ндер меншіктеу т.с.с).

· Кө шіру конструкторы класс объектісінен мә ліметтерді кө шіру арқ ылы осы класстың басқ а объектілерін қ ұ рады.

Қ алыпты жағ дайда берілген конструктор. Қ алыпты жағ дайда берілген конструктор дегеніміз – инициализациялауғ а арналғ ан айқ ын мә ндер болмағ ан кезде объект қ ұ руғ а пайдаланылатын конструктор. Басқ аша айтқ анда, конструктор мынадай тү рдегі жариялауғ а қ олданылады: stock: stock1; // қ алыпты жағ дайда берілген

// конструктор қ олданып жатыр

Берілген оператордың сонда да жұ мыс істеп тұ рғ андығ ының себебі – егер ешқ андай конструкторлар болмаса, С++ те қ алыпты жағ дайда берілген конструкторлар автоматты тү рде қ олданылады. Мұ ндай конструтор болып қ алыпты жағ дайда берілген конструктор тү рі табылады, ол ешқ андай ә рекет орындамайды. Stock класы ү шін қ алыпты жағ дайда берілген конструкторда аргумент болмайтындағ ы жариялауда мә ндер болмайтынын кө рсетеді.

Компилятор қ алыпты жағ дайда берілген конструкторды бағ дарламада ешқ андай конструктор анық талмағ ан кезге дейін ғ ана қ амтамасыз етеді. Нақ тылы бір класқ а нақ тылы конструктор бекітілген соң, ү ндемей берілген конструкторды ұ сыну міндеттемесін компилятор программистке жү ктейді. Егер сіз қ алыпты жағ дайда қ олданылмайтын конструкторды пайдалансаң ыз, ө зің іздің ө зіндік конструктор ұ сынысын, Stock Stock1; тү ріндегі хабарлама қ ате болып келеді. Мұ ндай ә рекеттің себебі сізде инициализацияланбағ ан объектілерді қ ұ руды мү мкін еместей ететін қ ажеттілік туындауы мү мкін. Егер, бірақ, нақ ты инициализациясыз объектілер қ ұ ру қ ажеттігі туындаса, қ алыпты жағ дайда жұ мыс істейтін ө зіндік конструкторды анық тағ ан дұ рыс. Қ алыпты жағ дайда жұ мыс істейтін ө зіндік конструкторды анық тағ ан дұ рыс. Қ алыпты жағ дайда жұ мыс істейтін конструкторды тү рлі ә дістермен анық тауғ ы болады. Олардың бірі – қ ызмет етіп тұ рғ ан конструктордың барлық аргументтеріне қ алыпты жағ дайда берілген мә ндерді меншіктеу. Екінші ә діс аргументсіз екінші конструкторды алуғ а болады, сондық тан сіз екеуін де қ ұ рып қ оймағ аның ызғ а кө з жеткізіп алың ыз.

Практикада, ә детте, барлық элементтер белгілі, корректілі таң далғ ан мә ндерден басталатына сенімді болу ү шін объектілерді инициализациялау керек етеді. Осылайша, қ алыпты жағ дайда берілген конструктор барлық элементтер мә нінің тү сініксіз инициализациясын жү зеге асырады.

Параметрлі констукторлар. Бұ л кейде тиімді болады, бірақ кө п жағ дайда бір немесе бірнеше параметрлі конструкторлар қ олданылады. Параметрлер конструкторда да ә дістегі сияқ ты қ олданылады. Келесі мысалда параметрлі конструкторлары бар MyClass класы кө рсетілген:

using System;

class MyClass {

public int x;

public MyClass(int i) {

x=i;

}

}

class ParmConsDemo {

public static void Main() {

MyClass t1=new MyClass(10);

MyClass t2=new MyClass(88);

Console.WriteLine(t1.x+” ”+ t2.x);

}

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.