Ат мейкиндиктери жана коддун уюштурулушу
Программаларыңыз чоңойгон сайын аттардын кагылышуусуна жол бербеңиз
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++ бүдөмүктүктү жоюу үчүн курал берет: ар бир аттар топтомун өзүнчө ат мейкиндигине жайгаштыруу.