Бошланғич берилган конструктор ва деструкторлар
Агарда сиз конструктор ёки деструкторни аниқламасангиз, сиз учун бу ишни компиляторнинг ўзи бажаради. Стандарт конструктор ва деструкторлар бирорта аргумент қабул қилмайди ва ҳеч қандай амал бажармайди.
6.3. – листинг. Конструктор ва деструкторларни қўлланилиши
# include
class Mushuk
{
public:
Mushuk(int BoshlYosh);
~Cat( );
int GetYosh();
void SetYosh(int yosh);
void Miyovlash();
private:
int itsYosh;
};
// Mushuk синфи конструктори
Mushuk::Mushuk(int BoshlYosh)
{
itsYosh= BoshlYosh;
}
Mushuk::~Mushuk( )
{
}
// GetYosh функцияси itsYosh ўзгарувчи
// аъзосининг кийматини кайтаради
int Mushuk:: GetYosh()
{
return itsYosh;
}
//SetYosh функцияси itsYosh ўзгарувчи –
// аъзосига киймат ўзлаштиради.
void Mushuk::SetYosh(int yosh)
{
itsYosh= yosh;
}
// Meow функцияси экранга Miyov ёзувини
// чикариш учун ишлатилади.
void Mushuk:: Meow()
{
cout << “Miyov.\n”;
}
int main()
{
Mushuk Frisky(5);
Frisky.Meow();
cout << “Frisky”<
cout <<“yoshdagi mushuk.\n”;
Frisky.Meow();
Frisky.SetYosh(7);
cout<< “Hozir Frisky ”<
cout << “yoshda.\n”;
return 0;
}
НАТИЖА
Miyov.
Frisky 5 yoshda.
Miyov.
Hozir Frisky 7 yoshda.
const спецификатори орқали cинф функция аъзоларини эълон қилиш.
С++ тилида синф методларини шундай эълон қилиш мумкинки, улар орқали синфнинг ўзгарувчи – аъзоларининг қийматини ўзгартириш мумкин бўлмайди. Бундай аъзо – функцияларни эълон қилиш учун const калит сўзи ишлатилади. Масалан, ҳеч қандай аргумент қабул қилмай, void типидаги қиймат қайтарадиган SomeFunction() номли cинфнинг функция аъзосини шу тарзда эълон қиламиз:
void SomeFunction() const;
Синф аъзо – ўзгарувчиларига мурожаат қилувчи кўпгина функциялар худди шундай const калит сўзи орқали ифодаланиши лозим. Масалан, Mushuk синфида аъзо – ўзгарувчиларга мурожаат қилувчи иккита функция бор.
void SetYosh( int yosh );
int GetYosh ( );
SetYosh() функциясини эълон қилишда const спецификаторини ишлатиш мумкин эмас, чунки бу функция объект аъзо–ўзгарувчиси қийматини ўзгартиради. Лекин GetYosh() функциясини эълон қилишда албатта, const калитли сўзини ишлатишимиз лозим, чунки бу функция объектнинг ўзгарувчи аъзосининг қийматини ўзгартирмайди. Демак, Mushuk синфининг аъзо функцияларини қуйидагича эълон қилиш керак экан:
void SetYosh (int yosh);
int GetYosh() const;
Синфларни бошқа синфлардан ташкил топиши
Мураккаб синфларни ҳосил қилишда олдин уни ташкил этувчи оддийроқ синфларни эълон қилиб, кейин эса уларни бирлаштириш орқали синфни ҳосил қилиш мақсадга мувофиқдир. Масалан, ғилдирак синфи, мотор синфи, узатиш коробкаси синфи ва бошқа синфларни ҳосил қилиб, кейин эса уларни бирлаштириш орқали автомобил синфини қуриш олдимизга турган масалани ечишни анча осонлаштиради.
Иккинчи мисолни кўриб чиқамиз. Тўғри тўртбурчак чизиқлардан ташкил топган. Чизиқ эса икки нуқта орқали аниқланади. Ҳар бир нуқта х ва у координаталар ёрдамида аниқланади. 6.8. – листингда Turtburchak синфи кўрсатилган. Тўғри тўртбурчак тўртта нуқтани бирлаштирувчи тўртта чизиқ ёрдамида аниқланади. Бунда ҳар бир нуқта графикда координаталарга эга бўлади. Шунинг учун олдин ҳар бир нуқтанинг х, у координаталарини сақлаш учун Nuqta синфи эълон қилинган. 6.9.–листингда иккала синфнинг эълон қилиниши кўрсатилган.
Do'stlaringiz bilan baham: |