Javoblar Dasturlash asoslari


Download 57.96 Kb.
bet23/30
Sana08.03.2023
Hajmi57.96 Kb.
#1250414
1   ...   19   20   21   22   23   24   25   26   ...   30
Bog'liq
Javoblar Dasturlash asoslari

class Values
{ private:const int m_array[7]; };
C++11dan oldin, biz faqat initsializatsiyalash ro'yxati orqali qatorni nol qila olamiz:

class Values
{private:
const int m_array[7];
public:

Values(): m_array {} // massivga nolni joylashtirish
{// Agar biz massiv qiymatlarga ega bo'lishini xohlasak, bu yerda ta’minlashdan foydalanishimiz kerak }};
Biroq, C++ 11 da siz bir xil initsializatsiya yordamida massivni to'liq initsializatsiylashingiz mumkin:

class Values{
private:
const int m_array[7];
public:

Values(): m_array { 3, 4, 5, 6, 7, 8, 9 } // massivni initsializatsiyalash uchun uniform-initsializatsiyadan foydalanish
66. Sinflar tarkibidagi a'zo o'zgaruvchilarni initsializatsiyalash Sinflar tarkibidagi a'zo o'zgaruvchilarni initsializatsiyalash A'zolarni initsializatsiyalash ro'yxati, shuningdek, sinf a'zolarini initsializatsiyalash uchun ham ishlatilishi mumkin:
#include
class A { public:
A(int a)
{ std::cout << "A " << a << "\n"; } };
class B
{ private: A m_a; public: B(int b) : m_a(b-1) // konstruktor A (int) m_a a'zosini initsializatsiyalash uchun chaqiriladi
{ std::cout << "B " << b << "\n"; } };
int main() { B b(7); return 0; }
67. Sinflarni initsializatsiyalashda initsializatsiyalash ro'yxatlaridafoydalanish Agar initsializatsiyalash ro'yxati konstruktor nomi bilan bir qatorga to'g'ri kelsa, hamma narsani bitta qatorga qo'yish yaxshidir:
class Values { private: int m_value1; double m_value2; char m_value3;
public:
Values() : m_value1(3), m_value2(4.5), m_value3('d') // всё находится в одной строке { } };
Agar a'zolarni initsializatsiyalash ro'yxati konstruktor nomi yozilgan qatorga to'g'ri kelmasa, keyingi satrda (defis yordamida) boshlang'ichlarni kiritish kerak: class Values { private: int m_value1; double m_value2; char m_value3; public: Values(int value1, double value2, char value3='d') bu satrda juda ko'p narsalar bor, : m_value1(value1), m_value2(value2), m_value3(value3) // shuning uchun biz initsializatorlarni yangi qatorga joylashtiramiz (hoshiyani ishlatishni unutmang) { } }; Agar barcha initsializatorlar bitta qatorga to'g'ri kelmasa, siz har bir initsializator uchun alohida qator ajratishingiz mumkin: class Values { private: int m_value1; double m_value2; char m_value3; float m_value4; public:
Values(int value1, double value2, char value3='d', float value4=17.5) // на этой строке уже и так много чего, : m_value1(value1), // поэтому выделяем каждому инициализатору отдельную строку, не забывая о запятой в конце m_value2(value2), m_value3(value3), m_value4(value4) { } };
68. Sinfning statik o’zgaruvchi-a’zolariStatik a'zolar o'zgaruvchilari odatiy statik o'zgaruvchiga qarama-qarshi bo'lgan sinfning maxsus qismiga kirishlari mumkin.Statik a'zo o'zgaruvchilar class const static yoki constexpr static bo'lmasa, sinf tanasi ichida aniqlanmasligi mumkin.Statik a'zo o'zgaruvchilar o'z sinfidagi a'zo funktsiyalari uchun standart argument sifatida ishlatilishi mumkin. Oddiy o'zgaruvchiga qarama-qarshilik, agar global bo'lsa.Foydalanadi: agar o'zgaruvchining ikkala holatda ham dastur oxirigacha tirik bo'lishini xohlasangiz, lekin statik a'zo parametrlari ushbu sinfning maxsus qismiga kira oladi.

Download 57.96 Kb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   30




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