Left«endl; Пусть класс CRectan
Автор admin Суббота, 16 мая 2009 11:32
Left«endl; Пусть класс CRectangle имеет метод GetLeftO, возвращающий значение координаты Left. При ссылке на переменную-член внутри функции-члена частный экземпляр класса не описывается. class CRectangle { private: int Left; int Top; int Right; int Bottom; public: int GetLeft () }: int CRectangle::GetLeft О { return Left; } Как компилятор определяет, на какую копию переменной Left ссылается метод класса? В действительности, компилятор передает методу класса скрытый указатель на объект. Функция использует именно этот указатель для доступа к корректной копии переменных-членов. Например, в вызове Rect.GetLeftO; компилятор передает скрытый указатель GetLeft на объект Rect. Функция CRectangle: :GetLeft() использует этот указатель для доступа к копии переменной CRectangl е:: Left, принадлежащей объекту Rect. Обратиться непосредственно к скрытому указателю можно с использованием спецификатора this. Другими словами, внутри функции-члена этот спецификатор является предопределенным указателем, содержащим адрес объекта, на который ссылается функция (иногда он называется текущим объектом). Так, функция CRectangle:
Комментарии закрыты.
Последние комментарии