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

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

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

cout vs. std::cout - C++

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

всем доброго времени суток.
начал самостоятельно изучать c++. скачал в сети много разныx умныx книжек.. обнаружил в примераx кода основное различие:
одни авторы объявляют пространство имён std и далее использую комманды cout, cin итд. совершенно нормально. другие авторы учат изначально объявлению std::cout, std::cin без объявления данного пространства имён заранее.
в чем смысл? заранее благодарен )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2010, 03:36     cout vs. std::cout
Посмотрите здесь:

Std::cout<<(new class)->something(); - C++
Всем привет. Допустим есть: #include &lt;iostream&gt; class A{ int i; public: A() = default; //-std=c++0x for gcc...

Не могу осилить std::cout - C++
Подскажите плз, почему у меня может не работать cout и std::cout. Пробую в Dev-C++ 5.11 #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Почему gcc ругается на std::cout? - C++
Проблема такая: работаю на Mac, установил Xcode, запускаю gcc в командной строке. Имеется элементарная программка: #include...

std::cout в CodeBlocks неправильно работает? - C++
Ассоциативность у std::cout должна быть слева направо а этот пример в CodeBlocks доказывает противоположное. Добавляю в конец вектора два...

Std::cout и его перегруженный битшифт - C++
Здравствуйте, я пытаюсь понять, почему этот код не пишет в консоль &quot;Hi&quot;. #include &lt;iostream&gt; #include &lt;conio.h&gt; int main() {...

Вывод адреса по указателю на char в std::cout - C++
Есть такая вот функция. void Char(char type){ char c,*vc=&amp;c; cout&lt;&lt;setw(8); cin&gt;&gt;c; cout&lt;&lt;type &lt;&lt;setw(8)&lt;&lt;c &lt;&lt;setw(11)&lt;&lt;hex&lt;&lt;c ...

Странное рекурсивное поведение объекта std::cout - C++
Пытался организовать очередь при помощи шаблона и наткнулся на &quot;странное&quot; поведение: // Организация очереди при помощи шаблона ...

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

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

остальное не понял.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
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
Еще ссылки по теме:

Найти причины ошибки: cout не является членом std - C++
Пример из учебника, пишет что cin, cout - необъявленные идентификаторы, пыталась кажый прописать через std:: - пишет что cout не является...

Как узнать, находится ли std::cout в hex-режиме? - C++
Как узнать, находится ли std::cout в hex-режиме?

Нюансы ввода/вывода в Си и C++ (функция printf() и объект std::cout) - C++
Добрый день. Интересует следующий вопрос: каким именно образом работает команда форматирование &quot;%i&quot; в printf. В манах написано что...

std::endl; и std::cout"/n"; - одно и то же? - C++
Весь вопрос в теме.... std::endl; и std::cout&lt;&lt;&quot;/n&quot;; - одно и то же?

Написать программу более простым языком (как заменить std::cout на printf? ) - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;iomanip&gt; using namespace std; int main() { int const n = 5; int...


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

Или воспользуйтесь поиском по форуму:
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
Ответ Создать тему
Опции темы

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