Поскольку С++ является надмножеством С, то большинство программ на языке С являются также программами и на языке С++. (Имеется несколько небольших различий между С и С++, благодаря которым некоторые типы программ на языке С не будут компилироваться компилятором языка С++. Можно писать программы на С++, которые выглядят в точности как программы на языке С, но в таком случае не будут использоваться преимущества, предоставляемые С++-программистам. Кроме того, большинство программистов, пишущих на языке С++, используют стиль и некоторые особенности написания программ, которые присущи только С++. Поскольку важно использовать весь потенциал С++, то в этом разделе мы обсудим некоторые из таких особенностей, прежде чем перейти к собственно С++. Начнем с примера. Рассмотрим программу на языке С++:
#include <iostream.h>
#include <stdio.h>
int main()
{
int i ;
char str [80] ;
cout << "I like Borland C++.\n"; // однострочный комментарий
/* также можно использовать С-комментарии */
printf ("You can use printf(), but, most С++ programs don' t. \n");
// ввод числа с помощью >>
cout << "Enter a number: ";
cin >> i;
// вывод числа с помощью <<
cout << "Your number is " << i << "\n";
// чтение строки
cout << "Enter a string: ";
cin >>str;
// вывод
cout << str;
return 0;
}
Как можно видеть, эта программа выглядит совершенно отлично от обычной программы на языке С. Заголовочный файл iostream.h определен С++ и предназначен для поддержки операций ввода/вывода. Включение заголовочного файла stdio.h обусловлено использованием функции printf(). Если используются операции ввода/вывода собственно языка С++, то необходимости в этом файле нет.
Одной из особенностей, на которую стоит обратить внимание, служит объявление функции main()
int main()
вместо
int main(void)
которое используют программы на языке С. Причина этого заключается в том, что в языке С++ пустой список параметров эквивалентен спецификатору void. Это означает, что оба типа объявления функции равноправны в рамках языка С++. В С++ использование зарезервированного слова void для обозначения пустого списка параметров является допустимым, но рассматривается как излишество. Поскольку оно не является необходимым, далее в наших программах мы не будем использовать слово void для обозначения пустого списка параметров.
Следующая строка кода содержит несколько особенностей языка С++:
cout << "I like Borland C++.\n"; // однострочный комментарий
Оператор
cout << "I like Borland C++.\n";
выводит на экран «I like Borland С++.», после чего следует переход на следующую строку и возврат каретки. В С++ роль оператора << значительно расширена. Он продолжает выполнять роль оператора побитового сдвига влево, но используется также как оператор вывода данных в случае, если записан в указанной в примере форме. Слово cout представляет собой идентификатор, соответствующий экрану. Так же как и С, язык С++ поддерживает перенаправление ввода/ вывода, но, чтобы избежать дискуссий на эту тему, мы можем принять, что cout ссылается на экран. Можно использовать cout и оператор << для вывода данных любого встроенного типа, а также для вывода строк символов.
Важно отметить, что можно продолжать пользоваться функцией printf() (что проиллюстрировано в записанной выше программе) или любой другой функцией ввода/вывода языка С, но большинство программистов находят, что использование cout<< более соответствуют духу С++. В общем случае программы на языке С++ могут использовать любые функции, поддерживаемые Borland С++, включая и те, что определены языком С. Однако, в тех случаях, когда С++ предлагает альтернативный подход, ему следует отдавать предпочтение перед использованием функций языка С, хотя и нет правил, предписывающих это.
В предыдущей строке кода комментарии С++ следовали за выражением для вывода данных. В С++ комментарии определяются двумя способами. Комментарии языка С сохраняют свое значе
ние и в С++. Однако в С++ можно также определить комментарии размером в одну строку, используя //. Когда комментарии начинаются с //, все, что следует за этими знаками, игнорируется компилятором до конца строки. Обычно при включении многострочных комментариев используют нотацию С, а однострочных — С++.
Далее программа выводит запрос-подсказку пользователю, чтобы он ввел число. Число читается с клавиатуры, используя следующую инструкцию:
cin >> i;
В С++ оператор >> сохраняет свое значение сдвига вправо, но если он используется как показано выше, то служит оператором ввода числа с клавиатуры и записи его в переменную i. Идентификатор cin ссылается на клавиатуру. В общем случае можно использовать cin >> для загрузки переменных любого базового типа или строки.
Хотя в программе это и не проиллюстрировано, можно свободно использовать любую функцию С для ввода данных, например, функцию scanf(), вместо cin >>. Однако, как и в случае с cout, подавляющее большинство программистов находят использование cin >> в большей мере соответствующим духу С++.
Рассмотрим другую интересную строку программы:
cout << "Your number is " << i << "\n";
Этот код выводит на экран следующую фразу (предполагается, что значением i служит 100):
Your number is 100
после которой идет перевод каретки и переход на новую строку. В общем случае можно выполнять столько операций вывода <<, сколько надо.
Остальная часть программы демонстрирует, как можно прочитать и вывести строку, используя cin >> и cout <<. При вводе строки cin >> прекращает чтение, как только встречает специальный символ. Это аналогично тому, что делает стандартная функция scanf() при вводе строки.