67201

Вказівник this

Лекция

Информатика, кибернетика и программирование

Під час кожного виклику функції-члена класу їй автоматично передається вказівник на об'єкт, який іменується ключовим словом this, для якого викликається ця функція. Вказівник this – це неявний параметр, який приймається всіма функціями-членами класу.

Украинкский

2014-09-06

34 KB

0 чел.

Лекція № 8

Тема: Вказівник this

    Під час кожного виклику функції-члена класу їй автоматично передається вказівник на об'єкт, який  іменується ключовим словом  this, для якого викликається ця функція. Вказівник this – це неявний параметр, який приймається всіма функціями-членами класу. Отже, в будь-якій функції-члені класу вказівник this використовується для посилання на викликуваний об'єкт.

    Як уже  зазначалося вище, функція-член класу може мати прямий доступ до закритих (private)  членів-даних  свого  класу.  Наприклад,  нехай  визначено  такий клас:

class myClass 

{     int c;

     void Fun() {...};

     // ...

};

    У  тілі функції  Fun() можна  використовувати  таку  настанову  для  присвоєння члену c значення 10:

c = 10;

Насправді попередня настанова є скороченою формою такої:

this->c = 10;

Щоби зрозуміти, як працює вказівник this, розглянемо таку навчальну програму.

Приклад 1.  Демонстрація механізму застосування ключового слова this 

class myClass

{           int c;

       public:

 void Get(int n)   { this->c = n; }          // те саме, що c = n

 int Put()     { return this->c; }             // те саме, що return c

};

 

int main()

{      myClass Obj;   

       Obj.Get(100);

       cout << "c= " << Obj.Put() << endl;

       getch(); return 0;

}

    Внаслідок виконання ця програма відображає на екрані число 100. Безумовно, цей приклад тривіальний, але у ньому показано, як можна використовувати  вказівник this.  З  матеріалу  наступних  тем Ви  зрозумієте,  чому вказівник this є таким важливим для написання програм мовою C++.

    Кожна нестатична функція-член класу має доступ до обєкта, для якого вона викликана, через ключове слово this. Зазвичай, вказівник this використовують для повернення вказівника ( return this) або посилання ( return *this) на об’єкт класу.

Приклад 2.  Демонстрація механізму застосування ключового слова this 

class A

{

 int i;

public:

A(int i1) {i=i1;}

 void show(){cout<<"i="<<i<<endl;}

 void print()

{

 show();

 this->show();

 (*this).show();

}

};

void main()

{

A obj(1);

obj.print();

}

  Результати виконання програми:

і=1

і=1

і=1

   Вказівник this дуже важливий при перевантаженні операторів.

   Пам'ятаєте, що вказівник this автоматично передається всім функціям-членам.

   На закінчення зробимо два важливі зауваження. По-перше, дружні функції ( не є функціями-членами), і, отже, їм не передається вказівник this. По-друге, статичні функції-члени також не отримують вказівник  this.