Мазмунга өтүү

Санамалар, структуралар жана бириктирүүлөр

Сабактын башталышы

Санамалар, структуралар жана бириктирүүлөр

Өз маалымат түрлөрүңүздү түзүүнүн үч жолу

Негизги идея: Камтылган түрлөр (int, double, bool) чыныгы маселени сүрөттөө үчүн сейрек жетет. C++ өзүңүздүн түрлөрүңүздү долбоорлоого мүмкүнчүлүк берет. Санама (enum) байланышкан маанилердин белгиленген жыйнагын атайт, структура (struct) бир нече талааны бир топтомго бириктирет, ал эми бириктирүү (union) бир нече талаага бир эле эстутумду бөлүшүүгө мүмкүнчүлүк берет. Керектүүсүн тандай билүү - орто деңгээлдин негизги көндүмү.
Аягында сиз төмөнкүлөрдү жасай аласыз:
  • аймагы чектелген enum class жарыялоо жана анын негизги түрүн башкаруу,
  • талаалары, демейки инициализаторлору жана мүчө-функциялары бар struct аныктоо,
  • union деген эмне жана тегсиз эмне үчүн коркунучтуу экенин түшүнүү,
  • туура куралды тандоо - жана std::variant качан жөнөкөй бириктирүүнү алмаштырарын билүү.

1. Санамалар: ар бир жарактуу маани үчүн ат

Светофорду элестетиңиз. Ал эч качан "7" же "-3" эмес - ал болгону Кызыл, Сары же Жашыл. Санама (enum) - бул маанилерин ат менен санап чыккан түр, ошондуктан компилятор ошол аттар гана колдонуларын кепилдейт.

Заманбап C++ аймагы чектелген санаманы артык көрөт, ал enum class деп жазылат. Анын аттары санаманын өз аймагында жашайт жана ал эч кандай үнсүз int түрүнө айланбайт.

enum class Color { Red, Yellow, Green };

Color c = Color::Green;      // Color:: аркылуу тактоо керек
// int n = c;                // КАТА: кыйыр айландыруу жок
int n = static_cast<int>(c); // OK: ачык, n == 2

Демейде биринчи ат 0, кийинкиси 1 ж.б. Сиз маанилерди өзүңүз коё аласыз жана негизги түрдү (сактоо үчүн бүтүн сан түрүн) тандай аласыз:

enum class Status : unsigned char {
    Ok      = 0,
    Warning = 10,
    Error   = 20
};

Эски стиль, жөнөкөй enum Color { Red, Green };, Red жана Green ды тегерегиндеги аймакка түз таштайт жана өзү int түрүнө айланат. Бул эркиндик ат кагылышууларын жана жашыруун каталарды жаратат - так ушул себептен C++11де enum class кошулган.

Эреже: демейде enum class колдонуңуз. Жөнөкөй enum ду int ке автоматтык айландыруу чындап ыңгайлуу болгон эски бит желектери үчүн гана колдонуңуз.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө