Программирование >>  Программирование на языке c++ 

1 ... 11 12 13 [ 14 ] 15 16 17 ... 159


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. Рассмотренные выше формы записи в какой-то степени искусственны. Язык С++ вводит понятие ссылки, которая определяется следующим образом:

тип данных&

что означает косвенное обращение к определяемому данному. На самом деле ссылка - это синоним для определяемой переменной. Доступ к переменной может осуществляться через ее имя в вызывающей программе и через имя-синоним в вызываемой программе. После завершения вызываемой программы имя-синоним уничтожается, однако измененное значение переменной в вызывающей программе сохраняется. Рассмотрим пример:



1 ... 11 12 13 [ 14 ] 15 16 17 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика