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.


 

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

78818. Свято Стрітення 131.5 KB
  Мета: розказати про історію виникнення свята Стрітення і традиції повязані з ним; дати поняття про те що свічка - це світло Боже символ життя; ознайомити з легендою народними звичаями; поглибити знання про значення свічки як одного з символів християнської етики...
78820. Выступление агитбригады «Светофорчик» 58.5 KB
  По пути домой из школы Пригодятся правила Знак дорожный он достоин Твоего внимания Эти книги не простые И наука не легка Целый свод дорожных правил Надо знать наверняка 8. Ни на миг не забываем Знак дорожный каждый Всех к порядку призываем Это очень важно Все: Не нарушайте правила дорожного движения...
78821. ПОСВЯТА В СТАРШОКЛАСНИКИ 68.5 KB
  Мета. Виховувати повагу до вчителів, бажання продовжувати вчитися у старших класах; розвивати артистизм, логічне мислення; зв’язне мовлення; сприяти згуртуванню учнівського колективу.
78823. Дзвони Великодня 2.85 MB
  Показати красу і значущість одного з найвеличніших християнських свят; ознайомити з історією виникнення писанки із символікою знаків на писанках. На дошці висить килим а на ньому образ Ісуса Христа українська хата піч писанки кошики паска іграшковий коник квіти.
78824. Наші любі татусі і дідусі, ми вас любимо усі! 53.5 KB
  Сьогодні в нашім класі свято Тут сміху, радощів багато. Сьогодні татусів вітаєм, Всього найкращого бажаєм. Рідні, наші любі тата, Ми вітаєм вас на святі. Ми вас любим щиро-щиро, Вам бажаєм щастя й миру. Ви нас теж любіть, рідненькі, Бо ми діти дорогенькі Хочем бути на вас схожі І, як ви, такі ж хороші.
78825. Наш ляльковий театр в початковій школі 11.64 MB
  Проект спрямований на розвиток в учнів пізнавальних навичок, розвиток критичного мислення, формування навичок мислення високого рівня: навичок вибирати, створювати, аналізувати, передбачати, організовувати, розробляти, планувати, описувати, розвиток вмінь вирішувати ту чи іншу проблему...
78826. Казки маленькі, а розуму в них багато 64.5 KB
  Мета: Систематизувати знання дітей із розділу, розвивати навички читання, діалогічного і монологічного мовлення, виховувати бажання поповнювати свої знання, вивчати творчість українських письменників. Підсумок теми.