използване на пространство от имена Защо?

Аз съм нов в програмирането на C++ и ние използваме Turbo C++ (стара IDE), за да компилираме нашите програми. Проблемът е, че в Turbo C++ никога не използваме пространства от имена или дори std::cout по време на програмиране. Ние просто въвеждаме cout‹‹.... за да изведем нещата.

Наскоро започнах да използвам Visual C++ 2010, за да пиша моите програми и се предполага, че трябва да използваме „using namespace std“ или „std::“ тук. Но получих изхода дори когато използвах само cout‹‹..... и без 'using namespace std' (компилаторът показа грешка, но получи изход).

Следователно не успявам да разбера използването на пространства от имена. Може ли някой да ми помогне?

За разбирането!


person Krishna    schedule 06.04.2011    source източник


Отговори (3)


Пространствата от имена просто позволяват на програмиста да избягва сблъсъци при именуване на конструкции. По този начин мога да използвам множество библиотеки, без отделните библиотеки да се притесняват дали техните класове имат едно и също име. Java прави нещо подобно с пакети, а C# прави нещо подобно, което те също наричат ​​пространства от имена.

Синтаксисът using namespace просто означава, че компилаторът трябва да търси това пространство от имена за всичко, което не може да намери декларирано в текущия обхват.

Ако не сте принудени да използвате напълно квалифицираното име std:: или синтаксиса using namespace, тогава нещо във вашата програма вероятно вече го включва, вероятно във файл #includeed.

person digitlworld    schedule 06.04.2011

Очевидно винаги сте използвали (предварително компилирано) (заглавие), което съдържа 'using namespace std'; Това е стандартът ANSI C++, който изисква стандартната библиотека да е (и винаги е била) в пространството на имената std

person sehe    schedule 06.04.2011
comment
Не, компилаторът е точно толкова стар (около 1993 г. за Turbo C++ 3.0), така че е предстандартен. Всичко е в глобалното пространство на имената. Това е реликва. - person jonsca; 06.04.2011
comment
Какво.. имаха STL тогава? Защо не ми казаха по-рано :) - person sehe; 06.04.2011

Пространствата от имена са полезни при определяне кой клас да се използва. Да кажем, че вашата програма има клас, наречен "Sample". Освен това имате един или повече DLL файлове, които са дефинирали клас, наречен „Пример“.

Когато създавате нов екземпляр на "Sample", как той знае коя реализация да използва? Използвате пространство от имена, за да разграничите типа, който трябва да бъде създаден.

person Tejs    schedule 06.04.2011