ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 11) онлайн
Указатель this
Методы каждого объекта имеют доступ к некому волшебному указателю под на-
званием this, который ссылается на сам объект. Таким образом, любой метод мо-
жет узнать адрес, образно говоря, дома, в котором он прописан, то есть адрес сво-
его родного объекта. В следующем примере мы покажем механизм работы с этим
загадочным указателем.
Листинг 11.19. Программа WHERE
// where.cpp
// указатель this
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////
class where
{
private:
char charray[10]; //массив из 10 байтов
public:
void reveal()
{ cout << "\nМой адрес – не дом и не улица, мой адрес - " << this; }
// вывести адрес объекта
};
///////////////////////////////////////////////////////////
int main()
{
where w1, w2, w3; //создать три объекта
w1.reveal(); //посмотреть, где они находятся
w2.reveal();
w3.reveal();
cout << endl;
return 0;
}
В функции main() данной программы создаются три объекта типа where. За-
тем печатаются их адреса с помощью метода reveal(). Этот метод просто выводит
значение указателя this. Вот как это выглядит на экране:
Мой адрес - не дом и не улица, мой адрес - 0x8f4effec
Мой адрес - не дом и не улица, мой адрес - 0x8f4effe2
Мой адрес - не дом и не улица, мой адрес - 0x8f4effd8
Так как данные объектов хранятся в массивах, размер каждого из которых
равен 10 байтов, то объекты в памяти отделены друг от друга десятью байтами
(EC-E2=E2-D8=10 (дес)). Впрочем, некоторые компиляторы могут творчески
подойти к расположению объектов и выделить под каждый чуть больше, чем
10 байтов.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Схожі підручники
- Страхові послуги (частина 2)
- Загальні питання з курсу Історія економіки та економічної думки (частина 1)
- Методичні вказівки до виконання практичного заняття на тему «Теорія ігор.»
- Белая книга (частина 5) (онлайн)
- Загальні питання з курсу Право
- Товарознавство харчових продуктів функціонального призначення. Навчальний посібник (частина 2)
