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.


 

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

85378. Мониторинг воздействия на окружающую среду 67 KB
  Мониторинг воздействия на окружающую среду. Методы мониторинга воздействия на окружающую среду. Мониторинг воздействия на окружающую среду часть экологического мониторинга многоцелевая информационная система в задачи которой входит описание наблюдение оценка и прогноз источников воздействия на окружающую среду и отходов сбросы выбросы размещение и удаление отходов использование ресурсов и готовой продукции. Источник воздействия на окружающую среду ограниченная в пространстве область к которой могут быть отнесены все...
85379. Нормирование и лимитирование воздействия на окружающую среду 46.5 KB
  Нормативы воздействия на окружающую среду предельные характеристики источников воздействия на окружающую среду и условия размещения и удаления отходов соблюдение которых в любом случае не может привести к нарушению установленных критериев качества окружающей среды. Лимитирование воздействия на окружающую среду временное установление определенных характеристик источников воздействия на окружающую среду и отходов для соблюдения и контроля которых имеются необходимые возможности и средства. Лимиты воздействия на окружающую среду ...
85380. Распространение загрязняющих веществ 64 KB
  Если выбрасываемые в воздух примеси состоят из крупных частиц то распространяясь в атмосфере они под действием силы тяжести начинают спускаться с определенной постоянной скоростью в соответствии с законом Стокса. Естественно что почти все примеси в конечном итоге осаждаются на поверхности земли причем тяжелые осаждаются в основном под действием гравитационного поля а легкие в результате диффузионного процесса. Поскольку наиболее опасны для окружающей среды примеси газообразного вида типа окислов то именно таким легким соединениям...
85381. Нормирование качества воздуха, воды, почвы 67.5 KB
  Совершенно недопустимо сравнивать уровни загрязнения селитебной зоны с установленными ПДКрз а также говорить о ПДК в воздухе вообще не уточняя о каком нормативе идет речь. Уровень загрязнения атмосферы обычно описывается набором статических характеристик для ряда измеряемых вредных веществ. Для оценки степени загрязнения атмосферы средние максимальные концентрации веществ нормируются на величину средней максимальной концентрации для большого региона или на санитарногигиснический норматив ПДК. Нормированные характеристики загрязнения...
85382. Организация экоаналитического контроля 53 KB
  Контролируемые объекты и компоненты в экоаналитическом контроле Организация и обеспечение ЭАК требуют решения комплекса взаимосвязанных проблем которые образуют приведенную ниже единую систему: Нормативнотехническое обеспечение и правовая регламентация Контролируемые объекты и компоненты Методическое обеспечение Аппаратурное обеспечение Метрологическое обеспечение Обеспечение качества химической информации Кадровое обеспечение Нормативнотехническое обеспечение и правовая регламентация системы ЭАК С точки зрения природоохранительного...
85383. Требования к средствам измерения и классификация экоаналитических средств 35.5 KB
  Требования к средствам измерений Различными нормативными документами в области обеспечения единства измерений предъявляется достаточно жесткие требования к средствам измерений СИ применяемым при экоаналитических работах. Прежде всего СИ должны пройти испытания с целью утверждения типа средств измерений. После получения положительного результата испытаний такие средства измерений включаются в установленном порядке в Государственный реестр средств измерений При эксплуатации СИ необходимо соблюдать установленную в техническом паспорте СИ...
85384. Система наблюдения и контроля атмосферного воздуха ОГСНКа 34 KB
  В России существует сеть станций которая ведет наблюдения за содержанием загрязняющих веществ в атмосфере. Обычно на каждом посту измеряется до 8 загрязняющих веществ но учитывая что каждый промышленный центр имеет свою экологическую специфику и набор 3В возможно измерение до 80 компонентов. Стационарный пост предназначен для обеспечения непрерывной регистрации содержания загрязняющих веществ или регулярного отбора проб воздуха для последующего анализа. Помимо наблюдений в городах ведутся наблюдения за пределами урбанизированных...
85385. Средства контроля воздушных и других газообразных сред 81 KB
  Отбор проб воздуха. Средства контроля подразделяют на: системы комплексы приборы другие технические средства контроля загрязнения ТСКЗ воздушного бассейна с группировкой их по особенностям анализируемой воздушной среды следующим образом: ТСКЗ атмосферы ТСКЗ воздуха населенных мест и жилых помещений ТСКЗ воздуха рабочей зоны и производственных помещений ТСКЗ выбросов и паро воздушных смесей поступающих в атмосферу. Они могут быть сгруппированы следующим образом: промышленные газоанализаторы более 60 40 анализаторы...
85386. Экологический мониторинг поверхностных водных объектов 78.5 KB
  Программа ГСМОС Вода включает 7 основных пунктов: создание всемирной сети станций мониторинга; разработка единой методики отбора и анализа проб воды; осуществление контроля за точностью данных; использование современных систем хранения и распространения информации; организация повышения квалификации для специалистов; подготовка методических справочников; обеспечение необходимым оборудованием в отдельных случаях. Основные задачи систематических наблюдений за качеством поверхностных вод в системе ОГСНК можно сформулировать следующим образом:...