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.


 

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

42048. ИЗУЧЕНИЕ КОНСТРУКЦИИ И ТАРИРОВКА ИЗМЕРИТЕЛЬНОГО ПРЕОБРАЗОВАТЕЛЯ УРОВНЯ БУЙКОВОГО ТИПА УБ-П 80.5 KB
  Методические указания к лабораторным работам по курсу Технические измерения и приборы Системы управления химико-технологическими процессами и Автоматизация производственных процессов для студентов специальностей 220301 240301 240801 Березники 2006 г. Изучение принципа действия и конструкции измерительного преобразователя уровня. Ознакомление с методикой тарировки измерительных преобразователей уровня буйковых с пневматическим выходным сигналом....
42052. Изучение принципа измерения температуры при помощи термометра сопротивления 128.5 KB
  Изучение принципа действия и конструкции термопреобразователей сопротивления и вторичных приборов работающих в комплекте с термопреобразователями сопротивления. Закрепление знаний по разделу Измерение температуры при помощи термометров сопротивления теоретического курса Технические измерения и приборы.1 Термопреобразователи сопротивления Измерение температуры термопреобразователями сопротивления основано на свойстве металлов и полупроводников изменять свое электрическое сопротивление с изменением температуры.
42053. Математические модели исследования операций. Задача линейного программирования 422.5 KB
  Цель работы изучить возможности табличного процессора MS Excel для решения задач линейного программирования ЛП. Технология компьютерной реализации прямой задачи ЛП Основным методом решения ЗЛП является симплексметод. Этот метод реализуется с помощью утилиты Поиск решения и решающего блока Solver в табличном процессоре MS Excel. Вызывается командой меню СервисПоиск решения при отсутствии утилиты необходимо вызвать пункт меню Надстройки и в предложенном списке дополнительных модулей выбрать Поиск решения.
42054. Информационные технологии при решении целочисленной задачи линейного программирования 231.5 KB
  Информационные технологии при решении целочисленной задачи линейного программирования Цель работы изучить возможности табличного процессора MS Excel для решения задач целочисленного линейного программирования ЦЛП. Задача целочисленного линейного программирования Задачи оптимизации в результате решения которых искомые значения переменных должны быть целыми числами называются задачами моделями целочисленного дискретного программирования: Если то задачу называют полностью целочисленной; если же то имеем частично целочисленную...
42055. Технологии заправки воздушного судна специальными газами 2.68 MB
  Для этих целей предусмотрены как прицепные так и самоходные газозарядные станции для пополнения запасов специальных газов в бортовых система ВС. Пример простейшей прицепной газозарядной станции содержащей на тележке два баллона и компрессорную станцию показан на рис. Заправка бортовых систем ВС медицинским кислородом является самым сложной и опасной технологической операцией поэтому рассмотрим наиболее общий случай и конструкцию самоходной автомобильной кислородозарядной станции. Назначение конструкция и работа станции Автомобильная...
42056. Технологии заправки воздушного судна специальными жидкостями. Технические характеристики ЗСЖ-66 4.26 MB
  Технологии заправки воздушного судна специальными жидкостями Цель работы: изучить технологическое оборудование и особенности технологии его применения для заправки бортовых систем ВС специальными жидкостями Краткие теоретические сведения 1. Назначение конструкция и работа ЗСЖ66 Заправщик специальными жидкостями ЗСЖ66 предназначенный для заправки ВС синтетическими и минеральными маслами маслосмесями пусковым топливом бензином гидросмесями. В отсеках левого борта размещено оборудование систем заправки жидкостью для гидросистем и пусковым...