Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій по С.doc
Скачиваний:
7
Добавлен:
16.11.2019
Размер:
393.73 Кб
Скачать

5.6 Поточний об'єкт this, указники на члени класу і класні функції, порівняння з указниками на (позакласні) функції, указники на статичні члени класу

Поточний об'єкт this, указники на члени класу і класні функції, порівняння з указниками на (позакласні) функції, указники на статичні члени класу

Тепер подивимося, як методи дістаються до своїх атрибутів. Наприклад, визначимо

два вікна

const Screen w(4,3,"aaaabbbbcccc");

Screen u(w);

кожен з них змінить значення свого курсору, так що присвоєння

_cursor = _width*i + j;

застосовується до свого атрибуту:

w._cursor == 11

а

u._cursor == 14.

Як бачимо, метод, активізований об'єктом, повинен знати, який саме об'єкт,

його активізував. Для цього існує указник поточного об'єкту this , його тип

Screen* . Отже повний текст будь-якого методу, наприклад, методу move мав би

наступний вигляд

void Screen::move(int i, int j) const

{

if ((i>=this->_height) || (j>=this->_width))

this->_cursor=0;

else

this->_cursor = this->_width*i + j;

};

або для копіювального конструктора

Screen::Screen(const Screen& v)

{

this->_filler = v._filler;

this->_height = v._height;

this->_width = v._width;

this->_wContent = new char [_height*_width+1];

strcpy(this->_wContent,v._wContent);

this->_cursor=v._cursor;

}

Ясно, що в усіх цих випадках діє правило замовчування: “безпритульні” атрибути

і методи