Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Пространство имени


Автор: Coder 1.6.2005, 07:10
using namespace std;

без этой строки все так же прекрасно компилится в Borland C++ 5.02, а Турбо С++ 3.0 вообще не хочет компилить исходник с такой строкой. Почему?
Как ни странно во всех самоучителях пространство имени вводится, но толком не объясняется, что к чему....

Автор: chipset 1.6.2005, 07:50
Потому что когда создавался TC3.0 этой фичи ещё не было.

Автор: Coder 1.6.2005, 09:44
а зачем оно вообще нужно?

Автор: The Thing 1.6.2005, 10:17
точно сказатьне могу, сам не знаю.. но это помому подключает STL шаблоны...

Автор: Alastis 1.6.2005, 11:04
пространство имён - это механизм решения проблемы совпадения имен. Вообще эта тема в любой более менее современной книжке по cpp очень подробно рассматривается. Если нет книжки воспользуйся поиском.
В твоем случае ты пишешь using namespace std; для того чтобы мог записать так:
Код

cout << variable << endl;

иначе пришлось бы писать:
Код

std::cout << variable << std::endl;

Автор: ManiaK 1.6.2005, 11:40
Проще вот:
Код

namespace AnySpace{// Некоторая область
 int i;
}

i = 10;// Ошибка! Нет такой переменной в этой области (в глобальной)
AnySpace::i = 10;// Нормалёкъ

using namespace AnySpace;
// Теперь всё пространство имён AnySpace "вливается" в глобальное
i = 11;// Работает!

Автор: Coder 2.6.2005, 05:11
Alastis, в том то и дело, что и без
Код

using namespace std

этот код выполняется нормально
Код

cout << variable << endl;


Вот этого я и не пойму...

Автор: gepard 2.6.2005, 05:18
Цитата(Alastis @ 1.6.2005, 11:04)
иначе пришлось бы писать:

Нифига подобного. Я спокойно и без using namespace std такие коды копилю.

Автор: chipset 2.6.2005, 05:32
Цитата(gepard @ 1.6.2005, 19:18)
Нифига подобного. Я спокойно и без using namespace std такие коды копилю.

VC6 наверное? Ужос.

Автор: gepard 2.6.2005, 05:46
chipset
Ну да, раньше.
Сейчас вообще потоки не юзпю и сижу в .NET(2002)

Автор: Alastis 2.6.2005, 05:50
Coder
а ну, да в Borland C++ 5.02 и Турбо С++ 3.0 таких вещей еще не ввели

Автор: Orthenner 2.6.2005, 09:11
Цитата(Coder @ 2.6.2005, 05:11)
Alastis, в том то и дело, что и без
Код

using namespace std

этот код выполняется нормально
Код

cout << variable << endl;


Вот этого я и не пойму...

Этот код может и откомпилится, а вот этот без подключения std нет:

Код

#include "vector"


using namespace std;

int main(int argc, char** argv)
{
        vector<int> intV;
        for(int i=0;i<10;i++) intV[i]=i;
}


Лично я подключение namespace делаю только в cpp файлах, объявления в Header файлах я делаю через std::

Автор: Coder 2.6.2005, 09:58
Цитата(Alastis @ 2.6.2005, 05:50)
Coder
а ну, да в Borland C++ 5.02 и Турбо С++ 3.0 таких вещей еще не ввели

В BC 5.02 эта хрень уже есть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)