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.


 

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

34189. Показатели, производные от ВНП 16.78 KB
  Национальный доход. Таким образом получаем показатель национального дохода НД. С точки зрения собственников ресурсов национальный доход является измерителем их доходов от участия в производстве за текущий период. Предприятия рассматривают национальный доход как показатель отражающий уровень цен на факторы производства или ресурсы.
34190. Экономический рост, его типы и факторы. Длинные волны экономической конъюнктуры 21.43 KB
  позволяет исключить воздей ствие инфляции и универсальнее поскольку при расчете темпов роста трудно рассчитать общий показатель для производства раз личных изделий. Основные показатели экономического роста: 1 годовой прирост объема ВНП ВВП НД; 2 годовые темпы роста ВНП ВВП НД на душу населения; 3 годовые темпы роста промышленного производства в целом его отраслей на душу населения. При данном типе экономического роста в произ водство вовлекается все большее количество ресурсов природ ных трудовых материальных но не...
34191. Государственное регулирование экономического роста 17.32 KB
  Кейнсианцы рассматривают экономический рост преимущественно с точки зрения факторов спроса. Обычно они объясняют низкие темпы роста неадекватным уровнем совокупных расходов которые не обеспечивают необходимого прироста ВНП. В отличие от них сторонники âэкономики предложенияâ отдают предпочтения долгосрочным перспективам делая упор на факторы обеспечивающие рост общественного продукта при полной занятости и полной загрузке производственных мощностей.
34192. Инфляция: причины, формы и виды 24.41 KB
  Инфляция это снижение покупательной способности денег проявляющееся через относительно быстрый рост цен. Скрытая инфляция существует как правило в нерыноч ной экономике в которой цены и заработные платы контро лируются и определяются государством. Открытая инфляция проявляется в форме роста цен на товары и услуги. Бумажные деньги обесцениваются возни кает избыточная денежная масса не обеспеченная соот ветствующим количеством товаров и услуг.
34193. Безработица и ее виды. Норма безработицы 31.96 KB
  Норма безработицы. Причины безработицы падение темпов экономического роста технический прогресс структурная перестройка эконо мики инфляция демографическая политика государства. Основные формы безработицы фрикционная структур ная циклическая сезонная застойная. Для характеристики состояния безработицы использу ются различные показатели доля безработных в совокупной рабочей силе количество безработных средняя продолжи тельность безработицы доля длительно безработных в эконо мически активном населении и др.
34194. Взаимосвязь инфляции и безработицы 31.89 KB
  Взаимосвязь инфляции и безработицы Безработица социальноэкономическое явление когда часть активного населения не может применить свою рабочую силу. В условиях инфляции резко сокращаются инве стиции особенно долгосрочные что отрицательно сказывает ся на экономическом росте. Соотноше ние этих двух параметров в краткосрочном периоде описыва ется кривой Филлипса Доля безработных Кривая Филлипса показывает взаимное изменение уров ней безработицы и инфляции в экономике и означает что инф ляция высока при низкой безработице и низка при...
34195. Необходимость, сущность и направления государственного регулирования экономики 23.13 KB
  Необходимость сущность и направления государственного регулирования экономики. Необходимость и сущность государственного регулирования экономики Необходимость государственного вмешательства в экономику обусловлена теми недостатками и отрицательными явлениями которые развиваются в процессе функционирования свободной стихийной рыночной экономики. Необходимость государственного регулирования экономики сформировало важнейшую проблему развития большей части стран в том числе и России достижение общенационального равновесия страны....
34196. Финансовая политика государства. Государственный бюджет 20.68 KB
  Финансы денежные средства рассматриваемые в про цессе создания и движения; формируются в ходе производства распределения и перераспределения ВВП валового внутрен него продукта страны. Финансы страны совокупность фи нансов всех секторов экономики в их взаимодействии между собой и остальными странами мира. В современных условиях понятием ≪финансы≫ определяют всю систему эконо мических отношений связанную с образованием распределени ем и перераспределением денежных ресурсов. Условно можно выделить государственные финансы финансы...
34197. Налоговая система государства: цели, виды налогов, методы взимания 15.58 KB
  Налоговая система государства: цели виды налогов методы взимания В ст. Согласно Налоговому кодексу РФ под налогами понимают обязательный индивидуальный безвозмездный платеж: взимаемый с организаций и физических лиц в форме отчуждения принадлежащих им на праве собственности хозяйственного ведения или оперативного управления денежных средств в целях финансового обеспечения деятельности государства и или муниципальных образований. Совокупность налогов сборов пошлин и других обязательных платежей взимаемых в бюджет на условиях...