Объектга йўналтирилган программалаш


Download 0.58 Mb.
bet13/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   ...   9   10   11   12   13   14   15   16   ...   71
Bog'liq
С ОЙП

class Nuqta
{
int x,y;
public:
Nuqta(int _x, int _y);
void Qiymat_Berish(int x0, int y0);
// константа функция-аъзо
void Qiymat_Olish(int xx, int yy) const;
};
Nuqta::Nuqta(int _x, int _y)
{ x=_x; y=_y;}
void Nuqta::Qiymat_Berish(int x0, int y0)
{ x=x0; y=y0;}
void Nuqta::Qiymat_Olish(int &xx, int &yy)const
{ xx=x; yy=y; }

Худди шундай, константа объектлар яратиш мумкин. Бунинг учун объект эълони олдига const модификатори ыщйилиши керак.


const Nuqta koord(3,6);
const калит сўзи компиляторга ушбу объектнинг ҳолати ўзгармаслиги кераклигини билдиради. Шу сабабли объект берилган-азъолари қийматини ўзгартирадиган функция–аъзосини чақириши учраса, компилятор хато ҳақида хабар беради. Бу қоидага константа функция-аъзоларни чақириш рриоя қилмайди, чунки ўз мазмунига кўра улар берилган–аъзоларни қиймsатини ўзгартира олмайди. Юқорида эълон қилинган Nuqta синфини константа объект ишлатишига мисол.


// Nuqta синф эълони ва аниқланиши
int main()
{
Nuqta nuqta1(3,7);
const Nuqta nuqta2(8,10);//Константа объект
int a,b;
nuqta1.Qiymat_Olish (a,b);
nuqta2. Qiymat_Berish(2,3);// Хато
nuqta2. Qiymat_Olish(a,b); // Тўғри
return 0;
}
Константа функция–аъзоларнинг берилганлар–аъзолар билан ишлаш билан боғлиқ чекловларни “айланиб ўтиш” учун mutable калит сўзи аниқланган. Бу калит сўз синфнинг қайси берилган-аъзоси константа функция-аъзолар томонидан ўзгартирилиши мумкин эканлигини кўрсатади. Статик ва константа берилганлар-аъзоларига mutable калит сўзини ишлатиш мумкин эмас, у берилганлар турининг модификатори сифатида ишлатилади.
Мисол.
#include
class Sinf
{

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling