|
Программирование >> Программирование на языке c++
2. ЯЗЫК С++ 2.1. Почему язык С++ лучше языка С По аналогии с языком С любая программа на языке С++ должна содержать функцию main, например: #include <stdio.h> void main(void) рг1п11( простейшая программа на языке С++ ); Эта программа выводит на экран сообщение, заданное в качестве аргумента библиотечного функции printf. Однако чаще всего в языке С++ используются другие способы организации вывода информации, например: #include <iostream.h> void main{void) { cout << простейшая программа на языке C-I-+ ; В языке С оператор используется для выполнения операции сдвига влево. В языке С++ он также применяется для этих целей. В то же время этот же оператор может использоваться и для организации вывода информации. В примере cout - это объект класса, определяющего стандартный поток для вывода информации (по умолчанию этот поток связан с экраном дисплея). Тогда, если слева от знака << записано имя объекта cout, то этот знак определяет операцию вывода. Подобные действия в языке С++ называются доопределением оператора (operator overloading). Суть доопределения заключается в том, что для различных операторов языка можно задать новые Почему язык С++ лучше языка С дМствия. Конкретное действие определяется типами аргументов, по отношению к которым применяется доопределенный оператор. Другой оператор ( ) можно использовать для организации ввода из стандартного входного потока (объект с именем cin). Эти вопросы будут рассмотрены более подробно в гл. 8. Язык С++ поддерживает все типы данных и арифметические операции, определенные в языке С. Он позволяет также работать с массивами и указателями, поддерживает все типы циклов (for, while, do-while) и операторов перехода (switch, if... else, goto). С++ наследует из языка С все правила работы с функциями (подпрограммами) и совершенствует их в следующих направлениях: 1) в языке С разные функции имеют разные имена. Однако для функций, которые выполняют те же задачи, но с разными типами данных, это не всегда оправдано. Рассмотрим две простейшие функции. Первая из них addjnt складывает два целых числа и возвращает целое число: int addjnt(int,int);. Вторая функция add float складывает два вещественных числа и возвращает вещественное число: float add float (float,float). В языке С мы обязаны использовать для этих целей два имени (как в нашем примере add int и add float). Однако разумнее использовать одно имя, например add. Если аргументы этой функции целые, то она должна возвращать целое значение, а если вещественные, то вещественное значение. Эта идея использована в языке C-I-+ и называется переопределением имени функций (function-name overloading); 2) в отличие от языка С в языке С++ аргументы можно передать в функцию либо по значению, либо через ссылку. Рассмотрим пример. Предположим, нам необходима функция, в которую передаются две переменные целого типа (в виде параметров), и она (функция) обменивает значения этих переменных. Следующая программа: void swap(int а, int b) { int temp; temp = a; a = b; b = temp; } будет ошибочной, так как в языке С переменные а и b являются локальными (внутренними). Они существуют только внутри функции и разрушаются при выходе из нее. Поэтому вызов нашей функции int а=10, Ь=20; swap(a,b); приведет к тому, что после ее завершения по-прежнему а = 10 и b = 20 (т. е. переменные не обменяли свои значения). В языке С данная проблема разрешается передачей в функцию указателей на переменные вместо самих переменных. Тогда изменение значений переменных осуществляется косвенно через указатели. Сами переменные в функцию не передаются и объявляются в вызывающей программе. В результате после завершения функции переданные в виде параметров локальные указатели разрушаются, но при этом измененные косвенным образом значения переменных сохраняются. Рассмотрим пример: void swap(int* а, int* b) { int temp; temp = *a; *a = *b; *b = temp; } Теперь вызов функции swap int a=10, b=20; swap(&a,&b); приведет к тому, что после завершения этой функции а=20 и Ь=10. Рассмотренные выше формы записи в какой-то степени искусственны. Язык С++ вводит понятие ссылки, которая определяется следующим образом: тип данных& что означает косвенное обращение к определяемому данному. На самом деле ссылка - это синоним для определяемой переменной. Доступ к переменной может осуществляться через ее имя в вызывающей программе и через имя-синоним в вызываемой программе. После завершения вызываемой программы имя-синоним уничтожается, однако измененное значение переменной в вызывающей программе сохраняется. Рассмотрим пример:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |