Методи кожного об’єкта мають доступ до вказівника this, що є аналогом відомого нам з вивчення Паскалю неявного параметра Self. В програмі 13.18 показано механізм роботи з цим вказівником.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<bios.h>
class where
{private:
char chararray[10];
public:
void reveal()
{cout<<"\nАдреса обєкту "<<this;}
};
///////////////
int main()
{clrscr();
where w1,w2,w3;
w1.reveal();
w2.reveal();
w3.reveal();
cout<<endl;
bioskey(0);
return 0;
}
Програма 13.18
В головній функції цієї програми створюються три об’єкти типу where. Потім друкуються їх адреси за допомогою методу reveal(). Цей метод просто виводить значення вказівника this на екран, показуючи адресу кожної змінної. Конкретна адреса залежатиме від багатьох факторів і відрізнятиметься при різних виконаннях програми.
Доступ до компонентних даних через вказівник this
Коли ми викликаємо будь-який метод, значенням вказівника this стає адреса об’єкту, для якої цей метод викликаний. Вказівник this може інтерпретуватися як будь-який інший вказівник на об’єкт, відповідно, його можна використовувати для одержання доступу до даних об’єкту, на які він посилається. Це продемонстровано в програмі 13.19.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<bios.h>
class what
{private:
int alpha;
public:
void tester()
{this->alpha=11;
cout<<this->alpha;
}
};
/////////////
int main()
{clrscr();
what w;
w.tester();
cout<<endl;
bioskey(0);
return 0;
}
Програма 13.19
Ця програма просто виводить на екран значення 11. Звернімо увагу, яким чином метод tester() дістає доступ до змінної alpha:
this->alpha
Це те саме, що й пряме посилання на alpha. Такий синтаксис обробляється без жодних проблем, але насправді він не виконує нічого важливого, просто показуючи, що вказівник this дійсно посилається на об’єкт.