Javoblar Dasturlash asoslari


Download 57.96 Kb.
bet25/30
Sana08.03.2023
Hajmi57.96 Kb.
#1250414
1   ...   22   23   24   25   26   27   28   29   30
Bog'liq
Javoblar Dasturlash asoslari

#include
class Fraction
{ private:
int m_numerator;
int m_denominator; public:
Fraction() // jimlik bo’yicha konstruktor
{ m_numerator = 0; m_denominator = 1; }
int getNumerator()
{ return m_numerator; }
int getDenominator()
{ return m_denominator; }
double getValue()
{ return static_cast(m_numerator) / m_denominator; } };
int main()
{ Fraction drob; // argumentlar bo'lmaganligi sababli, standart Fraction () konstruktori chaqiriladi
cout << drob.getNumerator() << "/" << drob.getDenominator() << '\n'; return 0; } Bu sinf alohida int qiymatlari sifatida haqiqiy sonlarni o'z ichiga oladi. Standart
71.Sinf a'zolarining statik o'zgaruvchilarini aniqlash va initsializatsiyalash Sinf a'zolarining statik o'zgaruvchilarini aniqlash va initsializatsiyalash Sinf tanasi ichida statik a'zolar o'zgaruvchisini e'lon qilganimizda, biz kompilyatorga statik a'zolar o'zgaruvchisi mavjudligi haqida ma'lumot beramiz, lekin uning ta'rifi haqida emas. Statik a'zolar o'zgaruvchilari alohida sinf obyektlarining bir qismi bo'lmaganligi uchun (ular global o'zgaruvchilarga o'xshash tarzda ko'rib chiqiladi va dastur ishga tushganda initsializatsiyalanadi), siz statik a'zolarni sinf tanasidan tashqarida - global miqyosda aniq belgilashingiz kerak. Yuqoridagi dasturda bu quyidagi kod satri bilan amalga oshiriladi:
int Anything::s_value = 3; // statik a'zo o'zgaruvchini aniqlash
Bu yerda biz statik sinf a'zolarining o'zgaruvchisini aniqladik va unga 3 qiymatini berdirk. Agar initsializator ko'rsatilmagan bo'lsa, C++ s_value ga 0 ni belgilaydi. E'tibor bering, statik a'zoning bu ta'rifi spetsifikatorlarga kirmaydi: siz s_value yopiq (yoki private) bo'lsa ham belgilashingiz va ishga tushirishingiz mumkin. Agar sarlavha faylida sinf aniqlangan bo'lsa, unda statik a'zoning ta'rifi odatda sinf kodi bilan faylga joylashtiriladi (masalan, Anything.cpp). Agar sinf .cpp faylida aniqlangan bo'lsa, unda statik a'zoning ta'rifi odatda to'g'ridan-to'g'ri sinf ostida yoziladi. Sarlavha fayliga sinfning statik a'zosining ta'rifini yozmang (global o'zgaruvchilar kabi)..
72. Sinf tanasi ichida statik a'zo o'zgaruvchilarini initsializatsiyalash Sinf tanasi ichida statik a'zo o'zgaruvchilarini initsializatsiyalash. Sinf tanasida statik a'zolarni aniqlash uchun bir nechta yechimlar mavjud. Birinchidan, agar statik a'zo doimiy integral turi bo'lsa (u char va boolni o'z ichiga oladi) yoki doimiy ro'yxatga olish bo'lsa, unda statik a'zo sinf tanasi ichida initsializatsiyalash mumkin: class Anything { public: static const int s_value = 5; // int tipidagi statik doimiy o'zgaruvchi to'g'ridan -to'g'ri e'lon qilinishi va initsializatsiyalanishi mumkin }; Bu yerda statik a'zolar o'zgaruvchisi butun sonli doimiy bo'lgani uchun, sinf tanasidan tashqaridagi qo'shimcha aniq ta'rifning qo'shimcha qatori endi talab qilinmaydi. Ikkinchidan, C++11 dan boshlab, constexpr ishga tushirilishini qo'llab quvvatlaydigan har qanday ma'lumot turidagi statik constexpr a'zolari sinf tanasi ichida ishga tushirilishi mumkin: #include class Anything { public: static constexpr double s_value = 3.4; // yaxshi static constexpr array s_array = { 3, 4, 5 }; // bu hatto constexprni initsializatsiyalashni qo'llab -quvvatlaydigan sinflar bilan ishlaydi.
73. Statik sinf a'zolarining o'zgaruvchilaridan foydalanish Statik sinf a'zolarining o'zgaruvchilaridan foydalanish.Nima uchun sinflar ichidagi statik a'zo o'zgaruvchilaridan foydalanish kerak? Har bir sinf obyektiga o'ziga xos identifikator tayinlash uchun (variant sifatida): #include

Download 57.96 Kb.

Do'stlaringiz bilan baham:
1   ...   22   23   24   25   26   27   28   29   30




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