Язык С++ для системного программирования. Имена-этикетки. Класс как область действия

Страницы работы

Содержание работы

1 Во введении уже было сказано о том, насколько важно знать язык С++ для системного программирования. Ниже приводятся основы этого языка. Недостающие сведения могут быть пополнены из литературы или сети Internet.

Язык С++ основывается на С. Программы на С легко могут быть перекомпилированы как программы на С++. Есть, однако, несколько конструкций, которые в С и С++ обрабатываются по-разному. Кроме того, язык С++ - объектно-ориентированный. Это предоставляет программисту ряд дополнительных возможностей.

16.1 Ключевые слова С++

С++ расширяет список зарезервированных слов, имеющийся в С. Если вы преобразуете существующий код на С в код С++, то следует убедиться, что в качестве идентификаторов не используются следующие ключевые слова:

asm, try, catch, throw, this, template, class, public, private, protected, virtual, friend, new, delete, const, volatile, inline, signed, overload, operator.

16.2 Определение переменных

В языке С все локальные переменные должны определяться до первого исполняемого оператора. В С++ определять переменные можно в любом месте.

Пример:

#include <stdio.h>

#define N 5

void main( )

{

float x[N], s=Ø;

for(int i=Ø; i<N; i++)

{

printf("Введите x[%i]=\n",i);

scanf("%f",&x[i]);

s+=x[i];

}

/*В цикле for описана переменная inti*/

floaty[N]; //описан еще один массив

for (i= Ø; i<N; i++)//2-й раз переменную i описывать нельзя

{

y[i]=x[i]-s/N;

printf("y[%i]=%f\n",i,y[i]);

}

}

16.3 Передача данных в функцию по умолчанию

В прототипе функции С++ можно указать значения по умолчанию некоторых формальных параметров. Это позволяет пропустить соответствующие аргументы при вызове функции. На их место компилятор подставит значения, указанные по умолчанию. Параметры по умолчанию должны располагаться последовательно после тех формальных параметров, которые не имеют таких значений. Прототип функция имеет вид:

тип_результата имя_функции (параметры без значений, параметры со значениями по умолч.);

Если при вызове функции нужно задать значение фактического параметра, отличающееся от заданного по умолчанию, то нужно явно указывать значения и всех других фактических параметров, находящихся левее, даже если эти значения совпадают с заданными по умолчанию.

Соответственно, если при вызове функции параметр опускается, то опускаются и все параметры справа.

Если есть прототип функции, то значения данных по умолчанию приводятся только в нем. В определении функции повторно задавать значения по умолчанию нельзя. Будет ошибка. Если же функция определена до ее вызова и не имеет прототипа, тогда значения по умолчанию приводятся непосредственно при описании ее формальных параметров.

Инициализация формальных параметров может производиться также значениями глобальных переменных или констант.

Рассмотрим пример программы с использованием функции для начисления зарплаты за месяц в зависимости от количества отработанных дней и расценки за один день.

#include <stdio.h>

void zarplata (char*s, int days=24, float rascenka=3Ø.5);

voidmain ()

{

zarplata ("кум");//работал 24 дня по 3Ø.5 грн/день

zarplata ("брат", 26); //работал 26 дней по 3Ø.5 грн/день

zarplata ("сват", 24, 41); //24 дня по 41 грн/день

}

void zarplata (char*s, int days, float rascenka)

{

printf("%s заработал %f гривен\n", s, days*rascenka);

}

16.4 Ссылки

В С++ есть видоизмененная форма указателя - ссылка. Она может рассматриваться как указатель, который при употреблении всегда разименовывается. Фактически ссылка является еще одним именем или псевдонимом переменной. Объявляется при помощи унарного знака & (амперсанд) и при объявлении сразу же должна быть инициализирована. В общем, это выглядит как

тип &имя_ссылки = имя_переменной;

Например:

float x, &s=x;

Здесь s является ссылкой на переменную х типа float.

Ссылку можно инициализировать только один раз. Здесь уместно сравнить указатель и ссылку. Указатель - это переменная, которая может принимать значения адреса другой переменной определенного типа. Такие адреса можно присваивать несколько раз. Лишь бы это были адреса заданного типа переменных.

Ссылка тоже приобретает адрес, но это адрес конкретной переменной, и поменять его на адрес другой переменной нельзя!

Ссылки повышают эффективность программы, особенно при передаче данных при вызове функции. По сравнению с передачей данных по значению не нужно копировать передаваемые данные в стек. Экономятся время и память.

По сравнению с использованием указателей удобство в том, что вызывающая функция избавляется от операции взятия адреса (&), а вызываемая - от операций * и à. О ссылках нужно знать следующее:

1.  Ссылка не является самостоятельным типом и существует только после инициализации.

Похожие материалы

Информация о работе