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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 114, средняя оценка - 4.70
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
#1

Зачем часто писать std::, если можно один раз using namespace std? - C++

01.07.2010, 13:17. Просмотров 17492. Ответов 20
Метки нет (Все метки)

зачем часто писать std:: если можно один раз using namespace std?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2010, 13:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зачем часто писать std::, если можно один раз using namespace std? (C++):

что использовать std::cout или просто using namespace std? - C++
Приветствую! Сейчас учу С++, постигаю азы так сказать. В арсенале две книги - Джефф Кент, "Основы программирования " и Х.М....

Пространство имен - namespace std или std:: - C++
В каких случая лучше писать (std::cout) или просто прописать (namespace std) и почему ?

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream - C++
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++ 2005 Express Edition. Образ диска...

Как можно еще использовать std::placeholders вне в связки с std::bind? - C++
Добрый день! Как можно еще использовать std::placeholders вне в связки с std::bind?

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

STL std::set, std::pair, std::make_pair - C++
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы. Собственно перейдем к нашим баранам: есть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
01.07.2010, 18:29 #16
Цитата Сообщение от nekogdamne Посмотреть сообщение
Sanu0074, как я понял, комманда #define выполняет простую текстовую подстановку. В таком случае, не вижу разницы между #define и typedef.
# видите? Значит уже разница. #define подает комманду препроцессору, что PI есть 3,1415

Директива define позволяет связать идентификатор (мы будем называть этот идентификатор замещаемой частью) с лексемой (возможно, что пустой!) или последовательностью лексем (строка символов является лексемой, заключённой в двойные кавычки), которую называют строкой замещения или замещающей частью директивы define.

Например,

#define PI 3.14159
Идентификаторы, которые используют для представления констант, называют объявленными или символическими константами. Например, последовательность символов, располагаемая после объявленной константы PI, объявляет константу 3.14159. Препроцессор заменит в оставшейся части программы все отдельно стоящие вхождения идентификатора PI на лексему, которую транслятор будет воспринимать как плавающий литерал 3.14159.

Препроцессор выполняет грубую предварительную работу по замене замещаемых идентификаторов замещающими строками. В этот момент ещё ничего не известно об именах, поскольку транслятор фактически ещё не начинал своей работы. А потому следует следить за тем, чтобы замещаемые идентификаторы входили в состав объявлений лишь как элементы инициализаторов.

Рассмотрим несколько примеров. Директива препроцессора

#define PI 3.14159
Превращает корректное объявление

float PI;
в синтаксически некорректную конструкцию

float 3.14159;
А следующее определение правильное.

float pi = PI;
1
CyBOSSeR
Эксперт C++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.07.2010, 18:30 #17
Цитата Сообщение от Sanu0074 Посмотреть сообщение
внимательно читайте текст темы:
зачем часто писать std:: если можно один раз using namespace std?
И где здесь просьба рассказать, что входит в std?
Цитата Сообщение от nekogdamne Посмотреть сообщение
как я понял, комманда #define выполняет простую текстовую подстановку.
Именно.
Цитата Сообщение от nekogdamne Посмотреть сообщение
В таком случае, не вижу разницы между #define и typedef.
Где вы видели, чтобы typedef осуществлял текстовую подстановку?
1
nekogdamne
1 / 1 / 0
Регистрация: 30.06.2010
Сообщений: 7
01.07.2010, 18:43 #18
Lavroff, я имел в виду разницу по функциональности.
Но я уже понял, в чём различие. К примеру, выражение:
C++
1
#define unsigned short int usint
неверное. Вместо него надо использовать
C++
1
typedef unsigned short int usint;
0
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
01.07.2010, 18:44 #19
Правильно поняли
1
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
01.07.2010, 19:33 #20
Цитата Сообщение от nekogdamne Посмотреть сообщение
C++
1
#define unsigned short int usint
неверное.
Почему же неверное?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define unsigned short int usint
void qq()
{
    unsigned;
}
unsigned()
{
    return 55;
}
int main()
{
    unsigned = 99;
}
:-)
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
02.07.2010, 09:28 #21
Sanu0074, если хотите обсудить define - создайте отдельную тему.
Прекращаем оффтопить
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2010, 09:28
Привет! Вот еще темы с ответами:

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

using namespace std - C++
Обьясните пожалуйста понятным языком, что такое пространство имен, и зачем нужна эта команда или std::

using namespace std; - C++
Здравствуйте. Я заметил, что многие программисты стараются избегать этой строчки в своих программах. С чем это связанно? И еще...

std:: vs namespace - C++
Тема не для холивара, объясните пожалуйста чем лучше std:: а не using namespace std ? Без namespace std, возникает такая ошибка, но...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.07.2010, 09:28
Ответ Создать тему
Опции темы

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