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

Ат мейкиндиктери жана коддун уюштурулушу

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

Ат мейкиндиктери жана коддун уюштурулушу

Программаларыңыз чоңойгон сайын аттардын кагылышуусуна жол бербеңиз

Негизги ой: ат мейкиндиги - бул байланышкан идентификаторлорду (функцияларды, класстарды, өзгөрмөлөрдү, типтерди) топтоштурган аталышы бар аймак; ошондо алардын аттары башка жерде жарыяланган ушундай эле аттар менен кагылышпайт. Программа бир файлдан чоңоюп, китепканаларды кошо баштаганда, эрте-кечпи эки код бөлүгү бир эле атты каалайт. Ат мейкиндиктери эки атка тең өзүнчө, толук көрсөтүлгөн жолду берип чогуу жашоого мүмкүндүк берет - мисалы, audio::play жана video::play.
Сабактын аягында сиз:
  • аттардын кагылышуу маселесин жана компоновщик эмне үчүн жеңүүчүнү өз алдынча тандай албай турганын түшүндүрө аласыз,
  • ат мейкиндигин аныктап, анын мүчөлөрүнө көрүнүү аймагын чечүү оператору :: аркылуу кайрыла аласыз,
  • толук аталган ат, using-жарыялоо жана using-директива ортосунда аңдап тандай аласыз,
  • ичине салынган ат мейкиндиктерин, псевдонимдерди жана аты жок мейкиндиктерди колдоно аласыз,
  • көп файлдуу программаны баш файлдар жарыялап, булак файлдар аныктай тургандай уюштура аласыз - бир аныктама эрежесин бузбай.

1. Аттардын кагылышуу маселеси

Жарыяланган ар бир функция, класс жана глобалдык өзгөрмө кайсы бир көрүнүү аймагына ат киргизет. Кичинекей программада бул коркунучсуз. Бирок чыныгы долбоорлор сиздин кодуңузду үчүнчү тараптын китепканалары менен байланыштырат, ал эми аттар уникалдуу болууга милдеттүү эмес. Мисалы, тармак китепканасы менен маалымат базасынын китепканасы экөө тең connect деген эркин функцияны берет дейли:

// net.h
int connect();   // open a network socket

// db.h
int connect();   // open a database session

// main.cpp
#include "net.h"
#include "db.h"

int main() {
    return connect();   // ERROR: which connect() is this?
}

Компилятор бирдей кол тамгасы бар эки connect жарыясын көрөт. Ал сиз кайсынысын айткыңыз келгенин биле албайт, ал эми эки функция тең аныкталса, компоновщик да символдун кайталанганын билдирет. Бул аттардын кагылышуусу. Башканын китепкана функцияларын дайыма кайра атай албайсыз, ошондуктан C++ бүдөмүктүктү жоюу үчүн курал берет: ар бир аттар топтомун өзүнчө ат мейкиндигине жайгаштыруу.

Кагылышуу - бул компиляция же компоновка убагындагы маселе, аткаруу учурундагы бузулуу эмес. Ат мейкиндиктери аны программа иштебей туруп эле, аткаруу убагында эч чыгымсыз чечет.

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

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

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

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