348__________ Часть II. Программирование на C++

где последнее слово destructor отразит тот факт, что деструктор статического объекта был вызван последним, при выходе объекта из области видимости — в той точке, где расположена закрывающая скобка функции main.

Операция присваивания

Задача операции присваивания для класса состоит в том, чтобы дать вам возможность сделать один существующий объект эквивалентным другому. Сама операция представляет из себя знак равенства (=). Присваивание настолько важно, что если вы сами. не реализуете его, компилятор сделает это за вас. '

Вспомните: выше в этой главе говорилось о том, что для каждого создаваемого класса вы должны принимать во внимание конструктор по умолчанию, конструктор копий, операцию присваивания • и деструктор. Иногда имеет смысл воспользоваться предопределенными конструктором копий и операцией присваивания — то есть теми их версиями, которые автоматически генерируются компилятором.

К сожалению, это удается не всегда. Возможны ситуации, когда инициализация или копирование объектов из других объектов недопустимы; для указания этого существуют специальные способы (обратитесь к главе 17 "Конструкторы: копирование и присваивание"). Пока что, до выяснения подробностей, мы воздержимся от рассмотрения примеров неправильного применения функций копирования и присваивания.

Указатель на самого себя: this

У каждого объекта есть физическое местоположение. Оперировать с этими местоположениями можно посредством указателей. Как правило, в указателях хранятся адреса. Обращаясь к указателю, мы в действительности обращаемся к объекту, расположенному по содержащемуся в этом указателе адресу.

Каждый объект класса имеет свой физический адрес; его можно извлечь из указателя this. Внутренний указатель this есть у каждого класса. На самом деле мы всегда неявно используем указатель this, когда обращаемся к членам внутри области видимости функции-члена класса. Вот пример:

h03481.jpg

class THIS_DEMO

{

public:

THIS_DEMO()( this->a = 5; } private:

int a;

};