Пример 1. Каждый объект в C++ содержит специальный указатель с именем this, который автоматически создается самим компилятором и указывает на текущий объект
Лекция №4
УКАЗАТЕЛЬ THIS. INLINE-ФУНКЦИИ.
КОНСТАНТНЫЕ И СТАТИЧЕСКИЕ ДАННЫЕ И ФУНКЦИИ.
Указатель this
Каждый объект в C++ содержит специальный указатель с именем this, который автоматически создается самим компилятором и указывает на текущий объект. Типом this является Т*, где Т – тип класса текущего объекта. Поскольку указатель this определен в классе, область его действия – класс, в котором он определен. Фактически this является скрытым параметром класса, добавляемым самим компилятором к его определению. При вызове обычной функции-члена класса ей передается указатель this так, как если бы он был первым аргументом. Таким образом, вызов функции-члена
ObjName. FuncName (par1, par2);
компилятор трактует так:
ObjName. FuncName (& ObjName, parl, par2);
Но, поскольку аргументы помещаются в стек справа налево, указатель this помещается в него последним. В теле функции-члена адрес объекта доступен как указатель this. Дружественным функциям и статическим функциям-членам класса указатель this не передается. Нижеследующие примеры демонстрируют использование этого указателя:
Пример 1.
# include <iostream.h>
# include <string.h>
class Prim
{
public:
Prim (char *);
void Privet ();
char metka [20];
};
# include "Prim.h"
Prim:: Prim (char * name)
{
strcpy (metka, name);
Privet (); // Все три
this -> Privet (); // оператора
(* this). Privet (); // эквивалентны
}
void Prim:: Privet ()
{
cout <<"Hello, "<< metka << endl; // Оба оператора
cout <<"Hello, "<< this -> metka << endl; // эквивалентны
}
int main ()
{
Prim ob ("dear!");
}
Дата добавления: 2015-09-27 | Просмотры: 354 | Нарушение авторских прав
|