Butun, haqiqiy


Download 1.28 Mb.
bet20/22
Sana15.06.2023
Hajmi1.28 Mb.
#1479408
1   ...   14   15   16   17   18   19   20   21   22
Bog'liq
C tilida o‘zgarmaslar

this ko‘rsatkichi
this joriy obyektga ko‘rsatkich.

Nasl olingan toifaga ko‘rsatkich
Bir toifadagi ko‘rsatkich boshqa bir obyekt toifaga ko‘rsata olmaydi. Faqatgina bir holat istisno. Bu ona class voris classlarga ko‘rsatkich bo‘la oladi.
class base {
int a;
public: int get_a() { return this->a;}
void set_a(int x){ this->a = x; }
};
class derived: public base {
int b;
public: int get_b() { return this->b;}
void set_b(int x){ this->b = x; }
};
 
Nasl olingan toifaga ko‘rsatkich
base *bp; // ona bp ko‘rsatkich
derived d; // voris d obyekt
bp = &d; // base ko‘rsatkich derived ga ko‘rsatadi
//derived obyektiga base ko‘rsatkich orqali murojat
bp->set_a(5);
cout<get_a();
//errorrrr, chunki bp base pointer orqali derived obyektning a’zolariga
murojat qila olmaymiz
bp->set_b(5);
//derived obyektning a’zolariga murojat qilish uchun bp base ko‘rsatkichni derived ko‘rsatkich toifasiga o‘zgartirish kerak
((derived*)bp)->set_b(10);
cout<<((derived*)bp)->get_b();
 
42. Do’st funksiyalar qanday e’lon qilinadi?
Class’ning private va protected qismiga class ga tegishli bo‘lmagan friend funksiya murojat qilishi mumkin. Friend funksiyalar class ning ichida friend kalit so‘zi bilan yoziladi.
E’lon qilinishi:
class myclass {
..
friend int sum(myclass x);
.
};
Albatta friend funksiyalar sinfdan tashqarida mavjud bo‘ladi va ushbu do‘stona funksiya sinfning barcha sohalariga murojaat qila olishi mumkin.
class sm{
int a, b;
public:
friend int sum(myclass x);
void set_ab(int i, int j) { a = I; b = j; }
};
int sum(myclass x) {
return x.a + x.b; //sum() hech qaysi classga tegishli emas.
}
int main() {
myclass n;
n.set_ab(3, 4);
cout << sum(n);
return 0;
}

43. Do’st sinflar qanday e’lon qilinadi?


Bir class boshqa bir class ga do‘st bo‘lishi mumkin. Bunda sinflar bir – birining a’zolaridan foydalanish imkoniyatiga ega bo‘ladi. Bunda shu narsaga e’tibor berish lozimki, biror sinfga do‘st bo‘ladigan sinf (ya’ni friend kalit so‘zi orqali e’lon qilinadigan sinf), mazkur sinfning a’zolaridan foydalanish imkoniyatini yaratadi.
E’lon qilinishi:
class myclass {
..
friend someclass b;
.
};
 
Do‘st sinfdan foydalanish uchun quyida misol keltirilgan. Bunda e’tibor berishimiz lozimki, TwoValues sinfi Min sinfiga do‘st bo‘lib, bunda Min sinfi TwoValues sinfining a’zolaridan foydalanishi mumkin.
class TwoValues {
int a, b;
public:
TwoValues(int i, int j) { a = i; b = j; }
friend class Min;
};
class Min {
public:
int min(TwoValues x) { return x.a < x.b ? x.a : x.b; }
};
int main() {
TwoValues ob(10, 20);
Min m;
cout << m.min(ob);
return 0;
}

44. :: operatoridan foydalanish


45. Faylning qanday turlarini bilasiz?


C++ tilidagi standart va foydalanuvchi tomonidan aniqlangan turlarning muxim xususiyati shundan iboratki, ular oldindan berilgan chekli komponentalardan iborat yoki dinamik aniqlanganda operativ xotiraning cheklanganligidadir. Ma’lum bir sinf masalalari uchun oldindan komponentalar sonini aniqlash imkoni yo‘q, ular masalani yechish jarayonida aniqlanishi va yetarlicha katta xajmda bo‘lishi mumkin.
O‘tilganlardan bizga ma’lumki, massivlar yuzlab, xatto minglab elementdan iborat bo‘lishi mumkin. Buncha ma’lumotni klaviatura orqali kiritish uchun qancha vaqt behuda sarf bo‘lishini tushunish qiyin emas. Shuning uchun dasturlashda, odatda, kata hajmdagi ma’lumotlar matnli fayldan o‘qib olinadi. Bunday ma’lumotlar matnli ma’lumotlar sifatida turli usullar bilan hosil qilinadi. Masalan, ba’zi qurilmalarni nazorat testidan o‘tkazish vaqtida olingan natijalar maxsus qurilmalar yordamida matnli faylga yozib boriladi.
Ma’lumotlarni kompyuter xotira qurilmalaridan birida saqlashning eng qulay shakli fayllar hisoblanadi. Axborotlarni saqlashning boshqa variantlari (masalan, ma’lumotlar bazasi) ham fayllarga asoslanadi.
Fayl — bu kompyuter xotira quriimalaridan birida saqlanayotgan va o‘z nomiga ega bo‘lgan ma’lumotlar to‘plamidir.
Fayl bo‘sh bo‘lishi ham mumkin. Fayllar ma’lumot saqlashning eng qulay usuli ekanligining sababi quyidagilardan iborat:
1)odatda dastumi bajarib, olingan natijalar dastur o‘z ishini tugatgandan so‘ng, EHM xotirasidan o‘chib ketadi. Bu ma’lumotlarga yana ehtiyoj paydo bo‘lsa, dasturni yangidan ishga tushirishga to‘g‘ri keladi. Buning oldini olish uchun hosil qilingan natijalami fayllarga yozib qo‘yish mumkin;
2)faylda saqlanayotgan ma’lumotlar ko‘plab masala va dasturlar uchun yangi asos bo‘lishi mumkin, ya’ni dastur natijalari saqlab qo‘yilsa, bu ma’lumotlardan foydalanib boshqa masalalami yechish mumkin;
3)ma’lumotlar soni EHMning operativ xotirasiga sig‘maydigan darajada ko‘p bo‘lishi mumkin. Bunday vaqtda ma’lumotlaming bir qismini biror faylda vaqtincha saqlab qo‘yish mumkin;
4)fayllardan ulardagi ma’lumotlar doirasidagi ixtiyoriy maqsad va masalalar uchun foydalanish mumkin.
Fayllar o‘zining manzili hamda nomiga ega bo‘ladi. Faylning nomi odatda ikkita qismdan iborat bo‘lishi mumkin: nom va
kengaytma. Masalan:
D: /AkmX /local/ tuit. cpp
yozuvi, tuit.cpp faylni anglatadi. Bu yerda tuit - faylning nomi, .cpp esa uning kengaytmasi. Bu faylning manzili - D diskdagi 
AkmX papkasi.
Dasturchi fayllar ishini tashkil qilar ekan, faqat dastur va uning natijasi haqida qayg‘uribgina qolmasdan, balki ko‘plab qo‘shimcha dasturlar yordamida fayllar yaratish, faylda saqlanayotgan ma’lumotlarni boshqarish, tahlil qilish, tartiblash, ehtiyojga qarab displey yoki qog‘ozda akslantirish kabi masalalarni ham hal qilishi kerak.
Yana ilgari ko‘zda tutilmagan yangi ehtiyojlar uchun qo‘shimcha dasturlar yaratish haqida ham o‘ylashi kerak.
C++ tilida fayllar deb, EHMda saqlanayotgan bir xil tipga mansub bo‘lgan ma’lumotlar (komponentalar) to‘plamiga aytiladi. Faylda saqlanayotgan ma’lumotlardan foydalanish uchun ularni o‘qish va o‘zgaruvchilarga qiymat qilib berish talab qilinadi. Ixtiyoriy vaqtda faylning faqat bitta komponentasi bilan ishlash mumkin, xolos. Bu ma’lumotni ko‘rsatkich (kursor) ko‘rsatib turadi. Ko‘rsatkich birinchi komponentadan boshlab, har bir ma’lumot o‘qilgandan keyin, navbatdagi o‘qish kerak bo‘lgan ma’lumotni ko‘rsatib turadi. (Boshlang‘ich sinfdagi xatcho‘plarni eslab ko‘ring.) Fayldagi ma’lumotlar soni o‘zgarib turadi va u dastlab nolga teng bo‘ladi. Bu son keyinchalik faylga yangi ma’lumotlar qo‘shilganda ortishi yoki o‘chirilganda nolgacha kamayishi mumkin. Yangi ma’lumotlar odat bo‘yicha doim faylning oxiriga qo‘shiladi. Dastur yordamida qayta ishlashga mo‘ljallangan fayllar odatda tiplashgan va tiplashmagan bo‘ladi.

46. Fayl bilan ishlovchi qanday sinflarni bilasiz?


C ++ da fayllar, asosan, fstream sarlavha faylida mavjud bo‘lgan uchta ofstream, ifstream, fstream oqimlari yordamida ko‘rib chiqiladi.

Download 1.28 Mb.

Do'stlaringiz bilan baham:
1   ...   14   15   16   17   18   19   20   21   22




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