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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.67
Sundiver
 Аватар для Sundiver
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
#1

cout vs. std::cout - C++

04.04.2010, 03:36. Просмотров 5443. Ответов 11
Метки нет (Все метки)

всем доброго времени суток.
начал самостоятельно изучать c++. скачал в сети много разныx умныx книжек.. обнаружил в примераx кода основное различие:
одни авторы объявляют пространство имён std и далее использую комманды cout, cin итд. совершенно нормально. другие авторы учат изначально объявлению std::cout, std::cin без объявления данного пространства имён заранее.
в чем смысл? заранее благодарен )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
 Аватар для niXman
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 03:55     cout vs. std::cout #2
Цитата Сообщение от Sundiver Посмотреть сообщение
одни авторы объявляют пространство имён std
C++
1
using namespace std; // называется - раскрытием пространства имен.
Цитата Сообщение от Sundiver Посмотреть сообщение
далее использую комманды cout, cin итд. совершенно нормально.
для учебных целей - да, нормально. но для крупных проектов, такое позволено делать, только внутри блока.

Цитата Сообщение от Sundiver Посмотреть сообщение
другие авторы учат изначально объявлению std::cout, std::cin
это единственный правильный способ, по двум причинам.
1. не приходится переживать о перекрытии/смешении функций/классов с другим, открытым пространством имен.
2. при использовании нескольких библиотек в проекте, указание пространства имен, позволяет четко понимать, чьи классы/методы используются.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,216
Завершенные тесты: 1
04.04.2010, 12:16     cout vs. std::cout #3
Цитата Сообщение от niXman Посмотреть сообщение
для учебных целей - да, нормально. но для крупных проектов, такое позволено делать, только внутри блока.
т.к. если ты напишешь
C++
1
using namespace std;
в проекте будет много всякого,чего не используешь
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
04.04.2010, 13:44     cout vs. std::cout #4
а я вот просто пишу cout и cin без объявления пространства имен. как так?
niXman
Эксперт C++
 Аватар для niXman
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 14:02     cout vs. std::cout #5
Krist_ALL, у тебя компилятор древний. или просто борланд
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
04.04.2010, 14:30     cout vs. std::cout #6
Цитата Сообщение от Sundiver Посмотреть сообщение
в чем смысл? заранее благодарен )
Весь смысл укладывается в два поста niXman'а:
Цитата Сообщение от niXman Посмотреть сообщение
1. не приходится переживать о перекрытии/смешении функций/классов с другим, открытым пространством имен.
2. при использовании нескольких библиотек в проекте, указание пространства имен, позволяет четко понимать, чьи классы/методы используются.
Цитата Сообщение от niXman Посмотреть сообщение
у тебя компилятор древний. или просто борланд
Вполне возможно, что это переизданная старая редакция книги, в которой исправлены некоторые ошибки, но код не перерабатывался, ведь пространства имен - это довольно молодое явление

Sundiver, а вообще эта тема не раз уже обсуждалась, на форуме можно найти много интересного по этому вопросу
Sundiver
 Аватар для Sundiver
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
04.04.2010, 16:21  [ТС]     cout vs. std::cout #7
т.е. этим пространством имён можно пользоваться более менее безопасно, если объявлять его только в каком-то определённом блоке или функции. ?! например в main?!
niXman
Эксперт C++
 Аватар для niXman
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 16:22     cout vs. std::cout #8
Sundiver, да, если не собираешься раскрывать еще какое-то пространство.
Sundiver
 Аватар для Sundiver
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
04.04.2010, 17:40  [ТС]     cout vs. std::cout #9
Цитата Сообщение от niXman Посмотреть сообщение
Sundiver, да, если не собираешься раскрывать еще какое-то пространство.

например, раскрываю пространство имён "уныйдядька" и наблюдаю там функцию cerr, т.е. этот умный дядька её перегрузил получается. и если мне нужно будет использовать её с обоиx пространств, то соответственно прописывать:

umnijdyadka::cerr;
&
std::cerr;
niXman
Эксперт C++
 Аватар для niXman
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 17:47     cout vs. std::cout #10
Цитата Сообщение от Sundiver Посмотреть сообщение
и наблюдаю там функцию cerr
это объект, типа std::ostream

остальное не понял.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
04.04.2010, 17:47     cout vs. std::cout #11
Наглядный пример того, как НИКОГДА не нужно делать, но просто для разнообразия
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <cctype>
    
class Cout {
public:
    Cout() {}
    friend Cout& operator << (Cout& c, const std::string& s){
        for ( std::string::const_iterator i = s.begin(); i != s.end(); ++i )
            std::cout << (char)toupper(*i);
        return c;
    }
};
 
int main(){
    Cout cout;
    std::string s("abcdef");
    cout << s;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2010, 20:18     cout vs. std::cout
Еще ссылки по теме:

C++ Cout <<endl; Что это значит? Если ничего нету в cout?
C++ Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout
Операция std::cout для Объекта типа std::string C++
Ошибка в std::cout<<std::endl C++
Не могу осилить std::cout C++

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

Или воспользуйтесь поиском по форуму:
Sundiver
 Аватар для Sundiver
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
04.04.2010, 20:18  [ТС]     cout vs. std::cout #12
Цитата Сообщение от niXman Посмотреть сообщение

остальное не понял.

речь идёт о том, что если в другом пространстве имён имеется такой-же объэкт как и в пространстве std, то получается перегрузка и использовать объект в чистом виде без указания на пространство имён - опасно?!

Добавлено через 2 часа 22 минуты
easybudda, сапсибо, всё ясно) то что пытался выразить)
Yandex
Объявления
04.04.2010, 20:18     cout vs. std::cout
Ответ Создать тему
Опции темы

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