Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

polevoi_cpp_2013_spring_lecture_02

.pdf
Скачиваний:
6
Добавлен:
20.04.2015
Размер:
160.87 Кб
Скачать

Возвращаемое значение

задается инструкцией return

должно быть, если не void

неименованная временная переменная

пример:

void empty()

{

return;

}

16.02.2013

41

Функция main

int main()

int main(int argс, const char* argv[])

16.02.2013

42

Минимальная программа

/*

\brief Головная функция. */

int main()

{

return 0; // Признак успеха.

}

16.02.2013

43

Динамические объекты

время жизни не ограничено областью видимости переменной, а полностью определяется пользователем

“ живут” в динамической памяти

16.02.2013

44

Операторы работы с динамическими объектами

оператор new – создает объект

оператор delete – уничтожает объект

указатель, возвращенный new

0 (ноль)

пример:

int* pCounter = new int(0); //< новый объект

++(*pCounter);

delete pCounter; //< уничтожим объект

pCounter = 0; //< обнулим для верности

16.02.2013

45

Динамические массивы

new T[SIZE]

delete[]

пример:

/// создадим массив объектов

int* pCounters = new int[NCOUNTERS]; *(pCounters + 5) += 1;

/// уничтожим массив delete[] pCounters;

pCounters = 0; //< обнулим для верности

16.02.2013

46

Передача массива в функцию

• через адрес первого элемента

пример:

bool

reverse(int* pData, const int size)

{

if ((0 == pData) || (size < 0)) return false;

...

}

16.02.2013

47

Передача массива в функцию

пример:

int* pArr = new int[size];

...

reverse(pArr, size);

...

delete[] pArr;

pArr = 0;

16.02.2013

48

Работа с динамическими объектами (рекомендации)

выделять и уничтожать на одном уровне

документировать, кто отвечает за освобождение памяти

всегда обнулять указатель на освобождаемую память

всегда проверять указатель пере

использованием

16.02.2013

49