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.

   


 

А также другие работы, которые могут Вас заинтересовать

27612. Назначение наказания за неоконченное преступление, за преступление, совершенное в соучастии и при рецидиве преступлений 30 KB
  Назначение наказания за неоконченное преступление ст. 66 УК Назначение наказания различается в зависимости от стадии на которой было прервано общественно опасное деяние. За приготовление к преступлению срок или размер наказания не может превышать половины максимального срока или размера наиболее строгого вида наказания предусмотренного соответствующей статьей Особенной части Уголовного кодекса за неоконченное преступление.
27614. Назначение наказания по совокупности преступлений и совокупности приговоров. Порядок определения сроков наказания при сложении наказаний 37.5 KB
  Порядок определения сроков наказания при сложении наказаний. Назначение наказания по совокупности преступлений При совокупности преступлений наказание назначается отдельно за каждое совершенное преступление. Два этапа назначения наказания: 1назначение наказания за каждое преступление отдельно; 2 определение окончательного наказания по одному из принципов: поглощение менее строгого более строгим; полного сложения; частичного сложения.
27616. Нарушение неприкосновенности частной жизни (ст. 137 УК). Нарушение неприкосновенности жилища (ст. 139 УК) 29.5 KB
  Нарушение неприкосновенности жилища ст. Нарушение неприкосновенности частной жизни 1. Нарушение этого права влечет ответственность в частности уголовную. Нарушение неприкосновенности жилища 1.
27618. Преступления против безопасности движения и эксплуатации транспортных средств 96.5 KB
  Объективная сторона преступления состоит в одном из двух деяний: нарушение правил дорожного движения и нарушении правил эксплуатации транспортных средств. Квалифицирующий признак: деяние повлекшее по неосторожности смерть человека в соответствии с Правилами учета ДТП к числу погибших относятся и те кто скончался от полученных травм в течение 7 суток со дня ДТП. Нарушение правил обеспечивающих безопасную работу транспорта ст. Общественная опасность нарушения правил обеспечивающих безопасную работу транспорта...
27620. Наука уголовного права, ее предмет, метод и задачи. Её связь с другими отраслями научных знаний. Роль науки уголовного права в совершенствовании законодательства 35 KB
  Наука уголовного права ее предмет метод и задачи. Роль науки уголовного права в совершенствовании законодательства. Понятие уголовного права как науки. Предмет науки УП составляет уголовное законодательство и практика его применения обобщение действующего уголовного закона и проблем его совершенствования.