Элементы класса, о которых всегда необходимо помнить
Статья - Компьютеры, программирование
Другие статьи по предмету Компьютеры, программирование
°сположена закрывающая скобка функции 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
Для подготовки данной работы были использованы материалы с сайта