Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
#1

пространство имен - C++

04.02.2013, 14:48. Просмотров 1045. Ответов 7
Метки нет (Все метки)

Здравствуйте!

У меня вопрос...В си есть такая функция printf, которая аналогична функции С++ cout. Почему, когда нам необходимо напечатать, допустим строку, мы указываем пространство имен std::cout, а когда printf, то пространство имен не указываем?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 14:48     пространство имен
Посмотрите здесь:

Пространство имен - C++
Зачем пространство имен в программировании я чет не понимаю? У мну в учебнике отак написано. Пространство имен, локализуя видимость...

Пространство имен - C++
Подскажите, пожалуйста. Если я создам своё пространство имен и в нем создам функцию, например, abc() и при использовании в main() using...

пространство имен - C++
Один практикующий программист сказал мне, что пространство именusing namespace std; нежелательно объявлять в начале программы, а лучше...

Пространство имен - C++
Как составить код, когда необходимо использовать классы и методы из разных пространств имен. К примеру используется cout из std и...

Пространство имен - C++
Я часто встречаю в книгах, туторах, что объявлять пространство имен в больших проектах нельзя(не рекомендуемо), но нигде не сказано...

Пространство имен - C++
Здравствуйте, имеется код : triangle.h #ifndef TRIANGLE_H_INCLUDED #define TRIANGLE_H_INCLUDED namespace TRG { struct...

Класс и пространство имен - C++
Есть стэк, а он использует структуру как базовую единицу. Куда определить описание этой структуры - в пространство имен, а его включить в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
04.02.2013, 14:53     пространство имен #2
В языке Си не было возможности объявлять Пространства Имён.

Добавлено через 2 минуты
И вместо того что бы писать std::cout можно после директив #include написать using namespace std; (но это не всегда хорошо) а потом писать просто cout; или #using std::cout #using std::cin такая запись побочных эффектов не имеет
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
04.02.2013, 15:02  [ТС]     пространство имен #3
Цитата Сообщение от Пёс Посмотреть сообщение
В языке Си не было возможности объявлять Пространства Имён.

Добавлено через 2 минуты
И вместо того что бы писать std::cout можно после директив #include написать using namespace std; (но это не всегда хорошо) а потом писать просто cout; или #using std::cout #using std::cin такая запись побочных эффектов не имеет
Спасибо! А как нам узнать, библиотечная функция написана на си или с++?
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
04.02.2013, 15:09     пространство имен #4
как узнать.... ну если у вас новые заголовки, то все они именованы в таком виде<

<c***> для СИ файлов, наример <cmath> (раньше был math.h)

а для СИ++ файлов нет прификса "c". например <iostream> Повсторюсь, это только в новых реализациях... Встречаются и такие, в которых есть по 2 файла с префиксом и без него.
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
04.02.2013, 15:15  [ТС]     пространство имен #5
Цитата Сообщение от Пёс Посмотреть сообщение
как узнать.... ну если у вас новые заголовки, то все они именованы в таком виде<

<c***> для СИ файлов, наример <cmath> (раньше был math.h)

а для СИ++ файлов нет прификса "c". например <iostream> Повсторюсь, это только в новых реализациях... Встречаются и такие, в которых есть по 2 файла с префиксом и без него.
А почему тогда stdio.h сишный, а не си++, префикса нету ведь?
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
04.02.2013, 15:31     пространство имен #6
Цитата Сообщение от nutius Посмотреть сообщение
А почему тогда stdio.h сишный, а не си++, префикса нету ведь?
Потому что у Вас старая реализация, либо у вас имеются две версии это файла.

В Microsoft Visual Studio 2008 со стандартным набором у меня прекрасно компилируется с этим именем
C++
1
#include <cstdlib>
Добавлено через 1 минуту
но у меня также без проблем компилируется, и такой вариант:
C++
1
#include <stdlib.h>
nutius
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 60
04.02.2013, 15:34  [ТС]     пространство имен #7
Цитата Сообщение от Пёс Посмотреть сообщение
Потому что у Вас старая реализация, либо у вас имеются две версии это файла.

В Microsoft Visual Studio 2008 со стандартным набором у меня прекрасно компилируется с этим именем
C++
1
#include <cstdlib>
Добавлено через 1 минуту
но у меня также без проблем компилируется, и такой вариант:
C++
1
#include <stdlib.h>
Ага, спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2013, 16:33     пространство имен
Еще ссылки по теме:

Пространство имен std - C++
В книге Дейтела (как, и в других источниках) написано, что можно написать using namespace std, а можно указывать std:: перед функциями. Но...

Пространство имен std - C++
Какой стиль лучше ? using std::cout; using std::endl; or using namespace std;

Как узнать пространство имен? - C++
Здравствуйте, возникла ситуация, при которой нужно явно указать, к какому пространству имен относится функция Ellipse. Я только начал...

Включение класса в пространство имен - C++
Доброго времени суток! Имеется пространство имен, в котором планируют жить классы. Структура: namespace EVE { namespace Actions ...

Пространство имен в многофайловной программе - C++
Всем привет! Yashman, у которого часто что-то не получается снова в сети с новой проблеммой! :) Вот написал программу, а она не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Troll_Face
600 / 400 / 4
Регистрация: 26.04.2012
Сообщений: 2,070
04.02.2013, 16:33     пространство имен #8
пространства имен используются для того, чтобы пользовательские имена функций и переменных не пересекались с библиотечными. при использовании пространства имен любая функция или переменная? включенная в него? будет выглядеть так: пространство_имен::функция | переменная, где "пространство_имен" это наименование пространства имен (самое распространенное std), :: - операция разрешения области видимости, "функция | переменная" соответственно имя функции или переменной. конструкция using namespace <пространство_имен> практически исключает преимущество использование пространств имен, лучше раскрывать именно те функции, котоыре используются в коде. пример:
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std
int main() {
int a;
cin>>a;
cout<<a;
return 0;
}
лучше заменить таким кодом:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using std::cout;
using std::cin;
int main() {
int a;
cin>>a;
cout<<a;
return 0;
}
Yandex
Объявления
04.02.2013, 16:33     пространство имен
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru