68946

Покажчик this

Лекция

Информатика, кибернетика и программирование

При виклику функції-члена їй неявно передається покажчик на зухвалий об’єкт. Цей покажчик називається this. Розглянемо програму, в якій описаний клас pwr, призначений для обчислення ступеня деякого числа.

Украинкский

2016-08-04

29 KB

0 чел.

Лекція № 8

Тема: Вказівник this

При виклику функції-члена їй неявно передається покажчик на зухвалий об'єкт. Цей покажчик називається this. Розглянемо програму, в якій описаний клас pwr, призначений для обчислення ступеня деякого числа.

#include <iostream>

using namespace std;

class pwr {

double b;

int e;

double val; public:

pwr(double base, int exp);

double get_pwr() { return val; }

};

pwr::pwr(double base, int exp)

{

b = base;

e = exp;

val = 1;

if(exp==0) return;

for( ; exp>0; exp--) val = val * b;

};

int main() {

pwr x(4.0, 2), у(2.5, 1), z(5.7, 0);

cout « x.get_pwr() « " ";

cout « у.get_pwr () « " "; cout « z.get_pwr() « "\n";

return 0;

}

Усередині класу до функції-члена можна звертатися безпосередньо, не використовуючи об'єкти і назву класу. Таким чином, усередині конструктора pwr () оператор

b = base;

означає, що змінною b, що належить зухвалому об'єкту, привласнюється значення змінної base. Проте того ж самого оператора можна переписати інакше.

this->b = base;

Покажчик this посилається на об'єкт, що викликає функцію pwr(). Таким чином, вираз this->b посилається на змінну b, що належить поточному об'єкту. Наприклад, якщо функція pwr() викликана об'єктом х, то покажчик this в попередньому операторові посилатиметься на об'єкт х. Втім, цього оператора можна записати в скороченому вигляді, не використовуючи покажчик this.

Розглянемо повне визначення конструктора pwr (), написане за допомогою покажчика this.

pwr::pwr(double base,   int exp){

this->b = base;

this->e = exp;

this->val  =  1;

if(exp==0)   return;

for(   ;   exp>0;   exp--)

this->val  =  this->val   *  this->b; }

Насправді жоден програміст на мові C++ не стане писати конструктор таким чином, оскільки скорочена форма набагато простіша. Проте покажчик this дуже важливий при перевантаженні операторів, а також в ситуаціях, коли функція-член повинна використовувати покажчик на зухвалий об'єкт.

Пам'ятаєте, що покажчик this автоматично передається всім функціям-членам.

Отже, функцію get_pwr () можна переписати інакше.

double get_pwr()   {  return  this->val;   }

В цьому випадку, якщо функція get_pwr () викликається за допомогою оператора

у.get_pwr() ;

покажчик this посилатиметься на об'єкту. На закінчення зробимо два важливі зауваження. По-перше, дружні функції ( не є функціями-членами, і, отже, їм не передається покажчик this. По-друге, статичні функції-члени також не отримують покажчик this.


 

А также другие работы, которые могут Вас заинтересовать

68570. ДІЄВІ ФОРМИ МЕТОДИЧНОЇ РОБОТИ З ПЕДАГОГАМИ ЗАГАЛЬНООСВІТНЬОГО НАВЧАЛЬНОГО ЗАКЛАДУ 53 KB
  Методична робота є однією з найважливіших ланок у діяльності закладу освіти оскільки забезпечує постійне навчання педагогів підвищення їх фахової майстерності знайомить із інноваційними процесами в освіті та залучає до активної творчої педагогічної діяльності
68571. Нетрадиційні форми проведення педагогічних рад. Педагогічна вітальня 60.5 KB
  Що ж таке педагогічна вітальня? Це форма методичної роботи, до якої залучаються не тільки вчителі, а й батьки, учні, представники органів місцевого самоврядування та громадських організацій. Виходячи із назви даної форми роботи «вітальня», можна зазначити, що на заходах такого типу повинні...
68572. Система научно-методической работы учебного учреждения как основа построения и реализации индивидуальной траектории профессионального развития педагога 75 KB
  Система научно-методической работы учебного учреждения как основа построения и реализации индивидуальной траектории профессионального развития педагога На современном этапе организации учебно-воспитательного процесса самым важным есть личность педагога его развитие его профессионализм.
68573. Розвиток творчого потенціалу педагога в системі науково-методичної роботи школи 83 KB
  У статті розглянуто проблему формування творчого потенціалу педагога у системі науковометодичної роботи школи. У цьому зв’язку виникає проблема вивчення розвитку і використання творчого потенціалу особистості актуалізується необхідність побудови та реалізації освітнього процесу що створює...
68574. Роль контролю, оцінювання та стимулювання навчальної діяльності у підвищенні її результативності та розвитку творчої активності учнів 217 KB
  Мета: на основі узагальнення досвіду, вивчення психолого-педагогічної літератури виявити основні причини неуспішності школярів та способи вирішення даної проблеми; з’ясувати, як впливають умови уроку на створення комфортних умов для самореалізації та самовдосконалення особистості учня й забезпечення...
68575. Найбільш типові помилки у роботі вчителів та шляхи їх подолання 536.5 KB
  Недосконалість сформованої етичної компетентності фахівця призводить до того що майбутній учитель не може правильно обрати тактику своєї поведінки. Учитель дуже тихо говорить окремі слова вимовляє нечітко учням важко стежити за ходом розповіді. Готуючись до уроку кілька разів запишіть пояснення...
68576. Інтерактивні технології — шлях до формування творчої особистості учнів 132 KB
  Мета: сприяти усвідомленню необхідності прийомів інтерактивного навчання на уроках, підвищуючи мотивацію учнів до навчання; спільно працювати над формуванням навичок співпраці, обговоренням спільного вирішення проблем. Обладнання: фліп-чат, стікери, кошик із шкільними речами, ноутбук, слайди.
68577. Обдарована дитина – обдарований учитель: суб’єкт-суб’єктний діалог 87 KB
  Ведучий 1. Шановні колеги! Вітаємо вас на нашому аукціоні, який складатиметься з двох частин: презентаційної та практичної. Сьогодні він присвячений актуальній темі «Обдарована дитина – обдарований учитель: суб’єкт-суб’єктний діалог». Ведучий 2. Щоб отримати квиток на участь у купівлі цінних паперів...