![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Кнером |
|
||||||||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Приступил к изучению С++. Не понимаю, почему программисты
пишущие на С++ используют такие функции как printf, void main() и т.д. Пример.
Зачем у заголовков указывают расширение? Если новые заголовки не являются именами файлов? В одной из книг было написано, что новый вид заголовков является виртуальным включаемым файлом, который содержит информацию в предварительном скомпилированном виде. Почему указывают тив главной финкции void? Если по правилам она должна быть типа int? Лично у меня все 3 компилятора дают оплевуху и сообщают, что функция должна быть типа int. Для чего и почему использую функции и С. К примеру, printf. Если в С++ нуно использовать функцию cout. В одной из книги было написано, что эта функция усовершенствованная printf. И так далее... Было так же написано, что если программист использует функции С в С++, то не смысла тогда вообще использовать С++. Так как все равно он не использует приимущества С++. На форуме не раз встречал, что человек говорит, что написал программу на С++. А в коде присуствует все выше описанное... Больше всего меня запутал купленный мною справочник. С++. Специальный справочник (2-е издание) / Карпов Б., Баранова Т. СПБ.: Питер, 2005 - 381 с.: Ил. Обложка синяя, текст желтый с белым. Несколько примеров кода из книги.
При компилировании выдает.
Первая программа на С++.
Если заменить void на int, тогда программа будет скомпилирована. Такое ощущение, что все в перемешку. Лишь бы купили книгу. - Дополнительно хочу спросить, что является в действительности оператором вывода в С++. 1. cout 2. cout << 3. << Просто как я понимаю, cout это подпрограмма, которая связывается с терминалом, с консолью. А два угла уже осуществляют передачу в предоставленный терпимал. Если к примеру нужно будет вывести на принтер. То нужно будет указать некий ptr. Просто уще не знаю как вывести на принтер. Тогда получается, что оператором вывода можно считать два угла. В книге написано, что оператор вывода это cout. Всем ответившим спасибо. |
||||||||
|
|||||||||
| MAKCim |
|
||||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
это объект типа ostream ostream - это typedef basic_ostream<char>
<<
выкинь книжку
согласен
не поддавайся Это сообщение отредактировал(а) MAKCim - 28.5.2006, 18:45 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||||
|
|||||||||||
| ZeusAtVingrad |
|
||||||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Ты приступил к изучению С++ или к изучению программистов С++?
Смелые, однако, заявления.
Ну и указывай int. Делов-то! Это не главное отличие C и C++.
cout - не функция, стандартный поток вывода программы. Объект класса, как уже написали.
Автор книги имеет весьма своеобразное представление о преимуществах C++. C++ - это: - объектно-ориентированное программирование; - шаблонное программирование; - мощная стандартная библиотека; - ну и прочие "мелочи".
Из всего перечисленного оператор: <<
Стандартная библиотека ничего о принтерах не знает. Придётся использовать другие методы.
Не знаю хорошо ли это для новичка, но я присоединюсь к предыдущему оратору и посоветую Страуструпа. |
||||||||||||||||
|
|||||||||||||||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
ZeusAtVingrad Просто в стандрте C++ рекомендуется использовать
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
цитату можно? а то я что-то не уверен в этом -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Где-то было, я точно не помню. Вроде как для винды, а тем более для VC это стандарт
Но то, что main должна быть с int, Это, вроде как, точно стандрт? |
|||
|
||||
| Кнером |
|
||||||||||||||||||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
MAKCim, спасибо за совет.
-
-
Автор книги громких зявлений.
Я понимаю, что это не главное отличие. Я не понимаю, почему человек говорит, что этот код написан на С++, а не на С.
Я спросил: "для чего и почему в С++ используют функции из С". Если это конечно позволяет компилятор. XenonSk, как я знаю: - #include "stdafx.h", это из MS Visual Studio, а не из стандарта С++. - int argc, _TCHAR* argv[], это не обязательный параметр, так как мы программе ничего не передаем при ее запуске. Что по поводу справочника? Добавлено @ 23:17 |
||||||||||||||||||
|
|||||||||||||||||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
||||
|
||||
| Кнером |
|
|||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
А на С программа "Hello World!" весит 2,70 кб, а на С++ 5 кб. Тогда лучше использовать С? Получается, что программистов на С++ можно разделить на две категории: 1) те кто используют традиционную версию С++ (в перемешку С и С++) 2) те кто используют Standard C++ (чистый С++ с наворотами, нельяз использовать С) Просто в книге написано, что на сегодняшний день во всх компиляторах реализован Standard C++ |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Стандарт предусматривает сишные функции ради соместимоти, правда большинство заголовочных файлов заменены с xxx.h на cxxx (например stdlib.h - cstdlib) и имена объявлены в неймспейсе std.
Насчёт производительности и читабельности - надо разумно выбирать. Сомневаюсь, что 5 килобайт это очень тяжело, и что производительность упала так, что надо прибегать к извращенским методам. Насчёт пример из книжки: писал человек, ориентирующийся на VC++ 6. Дело в том, что по стандарту main возвращает int (как в C, так и в C++), но бывают ситуации (обычно отдельные ветки), когда она может ничего не возвращать (например - аварийное завершение). Компилеры для любой другой функции при этом выдадут варнинги, для main не должны. В VC++ 6 было не так, как следствие - разрешили void для main. Ну а впервом примере забыли, что в нормальных реализациях STL все имена (в том числе манипуляторы oct и endl, поток cout) объявлены в пространстве имён std. Есть три варианта решения проблемы:
Кстати заметь, что в первых двух случаях оператор <<, так же перегруженный внутри std раскрывается за счёт ADL. Последний вопрос - для чего изучать сишные приёмы в C++. На мой взгляд смысл есть, хотя надо помнить, что это именно сишные вещи. А смысл, во-первых в том, что C++ - это всё-таки гибридный язык (по крайней мере если смотреть на большинство практического кода). Во вторых, си - тоже не помешает. В третьих, очень многме хорошие книжки (например, понравившаяся мне - "Философия C++. Практическое программирование") подчёркивают приёмы C++ через противопоставление приёмам C. |
|||
|
||||
| Кнером |
|
|||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Любитель, благодарю Вас за подробный ответ и не большой совет.
Это сообщение отредактировал(а) Кнером - 29.5.2006, 01:06 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Спасибо!
|
|||
|
||||
| Кнером |
|
|||
|
тОрмоз ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 19 |
Любитель, извини, что так официально. Обещаю исправиться
Всем спасибо, вопрос решен. |
|||
|
||||
| ZeusAtVingrad |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Неуверен ни в stdafx.h ни в _TCHAR. Ни того ни другого в "стандарте" думаю нет, т.к. это заморочки конкретного компилятора. |
||||
|
|||||
| bel_nikita |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
ИМХО, хорошим стилем считается конструкция:
|
||||||||
|
|||||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |