Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 09:43   #1
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию Использование функция языка Си в программах на С++

В языке С++ существуют много более простых аналогов функций языка Си, например система ввода-вывода, оператор new, и т.п.
Во всех книжках по программированию написано (например Страуструп делает на это очень большой акцент), что использование функций Си в программах на С++ - плохо, что они опасные, устаревшие и т.п. Но нам в универе преподы говорят, что новые механизмы языка С++ (например система ввода-вывода) придуманы для упрощения жизни программиста и они менее эффективны, чем функции Си. Так вот собственно вопрос - что лучше использовать в программах на С++? Такой вывод:
Код:
#include <iostream>
using std::cout;
using std::endl;
...
int i=25;
cout << "I равно: "<<i<<endl;
...
или такой:
Код:
#include <stdio.h>
...
int i=25;
printf("i равно: %d",i);
...
С точки зрения удобства - мне абсолютно все равно что использовать, проблем с синтаксисом нет. Так что же лучше использовать с точки зрения эффективности и вообще идеологии языка С++?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 17.05.2009, 10:35   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

1. В printf отсутствует проверка типов. Напишите маску %d, а передадите параметром строку. Ошибка будет выявлена во время исполнения программы, а не компиляции.
2. Оператор << -это конечно метод класса, который вызывается немного дольше, чем функция, но в printf нужно еще парсить строку.
3. В printf нельзя выводить свои типы данных, а для потоков типа cout легко перегружается оператор сдвига и выводятся любые данные в нужном формате

В общем моё мнение: в программах на С++ использовать механизмы С++
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрицы на языка Си tanek Помощь студентам 10 27.04.2009 21:26
Смена языка Simon..14 Общие вопросы C/C++ 2 31.01.2009 15:06
Загрузка языка AnGrig Общие вопросы Delphi 6 17.10.2007 09:05
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50