polevoi_cpp_2013_spring_lecture_02
.pdf
Возвращаемое значение
•задается инструкцией 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 |
