Конструкторлар
Конструктор объектіні инициалдау үшін қажет жəне ол құрылған кезде автоматты түрде шақырылады. Төменде конструкторлардың негізгі қасиеттері көрсетілген.
□ Конструктор мəн қайтармайды, тіпті voidтипті мəнді де. Конструкторға нұсқауыш алу мүмкін емес.
□ Кластың құрамында əртүрлі инициалдау түрлеріне арналған əртүрлі параметрлі бірнеше конструкторлар болуы мүмкін (мұндайда асыра жүктеу механизмі қолданылады).
□ Параметрсіз шақырылатын конструктор келісім бойынша құрылған конструктор деп аталады.
□ Конструктор параметрлері осы кластан басқа кез келген типте болуы мүмкін. Параметрлер мəндерін келісім бойынша тағайындауға болады. Олар конструкторлардың тек біреуінде берілуі мүмкін.
□ Егер программалаушы бірде-бір конструкторды көрсетпеген болса, онда компилятор оны автоматты түрде құрады. Мұндай конструктор класс өрістеріне арналған келісім бойынша конструкторларды жəне базалық кластардың келісім бойынша конструкторларын шақырады («Қарапайым мұралау»). Егер класс құрамында тұрақтылар немесе сілтемелер бар болатын болса, онда класс объектісін құруға талпыныс жасау кезінде қателік туындайды, өйткені оларды нақты мəндермен инициалдау қажет, ал келісім бойынша конструктор мұны жасай алмайды.
□ Конструкторлар мұраланбайды.
□ Конструкторларды const, virtual жəне static модификаторлары арқылы сипаттауға болмайды.
□ Ауқымды объектілердің конструкторлары main функциясынан бұрын шақырылады. Жергілікті объектілер олардың əрекет ету аймағы екпінді болған сəтте бірден құрылады. Конструктор уақытша объектіні құрған кезде де іске қосылады (мысалы, функциядан объектіні беру кезінде).
□ Егер программада төмендегі синтаксистік конструкциялардың бірі кездесетін болса, онда конструктор шақырылады:
Бірінші операторда үш объект құрылады. Көрсетілмеген параметрлердің мəндері келісім бойынша тағайындалады. Екінші операторда health = 1000 параметрі бар (екінші парметрдің мəні келісім бойынша бекітіледі) атауы жоқ объект құрылады. Атауы жоқ объект көшірілетін Х объектісіне компьютер жады бөлінеді. Соңғы операторда health = 500 параметрі бар (екінші парметрдің мəні келісім бойынша бекітіледі) атауы жоқ объект құрылады. Атауы жоқ объект көшірілетін Y объектісіне жады бөлінеді. Объектіні құрудың мұндай формасын объектіні инициалдау үшін бір ғана параметрді көрсету жеткілікті болғанда ғана қолдануға болады. 198 Бірнеше конструкторы бар класс мысалы ретінде жоғарыда сипатталған monstr класына түсін (skin) жəне атын (name) беретін өрістерді қосу арқылы жетілдіреміз
Жоғарыда көрсетілген конструкторлардың біріншісі келісім бойынша құрылған конструктор болып табылады, себебі оны параметрлерсіз шақыруға болады. Енді monstr класының объектілерін əртүрлі тəсілдермен инициалдауға болады, қажетті конструктор жақшалар ішіндегі мəндер тізіміне байланысты шақырылады. Бірнеше конструкторды бергенде асыра жүктелген функцияларды жазу кезінде қолданылатын ережелер сақталуы тиіс – компилятордың қажетті нұсқаны тану мүмкіндігі болуы керек.
Достарыңызбен бөлісу: |