Элементы класса, о которых всегда необходимо помнить

Статья - Компьютеры, программирование

Другие статьи по предмету Компьютеры, программирование

°сположена закрывающая скобка функции main().

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

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

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

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

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

Напоследок рассмотрим еще одно понятие - указатель на самого себя, поскольку в дальнейшем материале мы будем использовать это понятие.

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

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

сlass THIS_DEMO

{

public:

THIS_DEMO(){ this->a = 5; } //обычно мы просто пишем а=5;

... //все остальное

private:

int a;

};

Имеется класс, в котором описан конструктор и член класса int a в закрытой секции (private) класса. В конструкторе THIS_DEMO содержится присваивание целочисленному члену а значения 5. Обычно this явно не указывается, просто пишут а = 5;. Но в данном случае мы демонстрируем, то, что всегда неявно происходит - использование this внутри функций-членов класса при обращении к членам класса.

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

Ну вот, на этот раз все.

Следующий материал будет разбит на несколько частей и посвящен проблемам копирования и присваивания в классах.

Если вам интересно, или возникают вопросы - пишите, разберемся.

Список литературы

P.Kimmel Using Borland C++ 5 Special Edition перевод BHV - С.Петербург 1997

Для подготовки данной работы были использованы материалы с сайта