
лекции программирование / polevoy_cpp_2012_spring_lecture_03
.pdf
Динамические объекты
•время жизни не ограничено областью видимости переменной, а полностью определяется пользователем
•“живут” в динамической памяти
25.02.2012 |
cppNewb.ru |
21 |

Операторы работы с динамическими объектами
•оператор new – создает объект
•оператор delete – уничтожает объект
–указатель, возвращенный new
–0 (ноль)
пример:
int* pCounter = new int; //< создадим объект
++(*pCounter);
delete pCounter; //< уничтожим объект
pCounter = 0; //< обнулим для верности
25.02.2012 |
cppNewb.ru |
22 |

Динамические массивы
•new T[SIZE]
•delete[]
пример:
/// Cоздадим массив объектов.
int* pCounters = new int[NCOUNTERS]; *(pCounters + 5) += 1;
/// Уничтожим массив. delete[] pCounters;
pCounters = 0; //< обнулим для верности
25.02.2012 |
cppNewb.ru |
23 |

Указатель на себя
•this – ключевое слово, указатель на текущий экземпляр
•определен внутри нестатических методов
•нельзя получить адрес
•нельзя присвоить значение
•используется неявно
25.02.2012 |
cppNewb.ru |
24 |

Пример неудачный (this)
пример: void
Point::setX(const int x)
{
this->m_x = x;
}
или
void
Point::setX(const int x)
{
(*this).m_x = x;
}
25.02.2012 |
cppNewb.ru |
25 |

Пример удачный (this)
T&
T::operator++()
{
// содержательная работа
return *this;
}
25.02.2012 |
cppNewb.ru |
26 |

Использование this
•использовать единообразно
•избегать избыточности
–использовать при необходимости, т.е. НЕ для доступа к членам в методах
25.02.2012 |
cppNewb.ru |
27 |

Константные поля
•не изменяются после создания объекта
•инициализируются в списке инициализации
25.02.2012 |
cppNewb.ru |
28 |

Константные поля (пример)
class FixedArr
{
public:
FixedArr(int size); private:
const int m_size;
///…
};
FixedArr::FixedArr(int size) : m_size(size)
///…
25.02.2012 |
cppNewb.ru |
29 |

Константные методы
•сохраняют логическую константность
–не изменяют состояния полей кроме mutable
•могут вызываться для константных экземпляров
•отличаются от неконстантных методов с тем же набором параметров
25.02.2012 |
cppNewb.ru |
30 |