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.

   


 

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

81513. Нарушения обмена нуклеотидов. Подагра; применение аллопуринола для лечения подагры. Ксантинурия. Оротацидурия 120.73 KB
  Когда в плазме крови концентрация мочевой кислоты превышает норму то возникает гиперурикемия. Вследствие гиперурикемии может развиться подагра заболевание при котором кристаллы мочевой кислоты и уратов откладываются в суставных хрящах синовиальной оболочке подкожной клетчатке с образованием подагрических узлов или тофусов. Поскольку лейкоциты фагоцитируют кристаллы уратов то причиной воспаления является разрушение лизосомальных мембран лейкоцитов кристаллами мочевой кислоты. Это вызывает ингибирование запасных путей спасения усиление...
81514. Биосинтез дезоксирибонуклеотидов. Применение ингибиторов синтеза дезоксирибонуклеотидов для лечения злокачественных опухолей 178.43 KB
  Синтез дезоксирибонуклеотидов идёт с заметной скоростью только в тех клетках, которые вступают в S-фазу клеточного цикла и готовятся к синтезу ДНК и делению. В покоящихся клетках дезоксинуклеотиды практически отсутствуют. Все дезоксинуклеотиды, кроме тимидиловых, образуются из рибонуклеотидов путём прямого восстановления ОН-группы у второго углеродного атома рибозы в составе рибонуклеозиддифосфатов до дезоксирибозы
81515. Биосинтез ДНК, субстраты, источники энергии, матрица, ферменты. Понятие о репликативном комплексе. Этапы репликации 154.76 KB
  Этапы биосинтеза ДНК. Предложен ряд моделей механизма биосинтеза ДНК с участием указанных ранее ферментов и белковых факторов однако детали некоторых этапов этого синтеза еще не выяснены. Основываясь главным образом на данных полученных в опытах in vitro предполагают что условно механизм синтеза ДНК у Е.
81516. Синтез ДНК и фазы клеточного деления. Роль циклинов и циклинзависимых протеиназ в продвижении клетки по клеточному циклу 163.63 KB
  Роль циклинов и циклинзависимых протеиназ в продвижении клетки по клеточному циклу. Все фазы клеточного цикла G1 S G2 M могут различаться по длительности но в особенности это касается фазы G1 длительность которой может быть равна практически нулю или быть столь продолжительной что может казаться будто клетки вообще прекратили деление. В этом случае говорят что клетки находятся в состоянии покоя фаза G0. Клетки эпителия кишечника делятся на протяжении всей жизни человека но даже у этих быстропролиферирующих клеток подготовка к...
81517. Повреждение и репарация ДНК. Ферменты ДНК-репарирующего комплекса 137.99 KB
  Ферменты ДНКрепарирующего комплекса. Процесс позволяющий живым организмам восстанавливать повреждения возникающие в ДНК называют репарацией. Все репарационные механизмы основаны на том что ДНК двухцепочечная молекула т.
81518. Биосинтез РНК. РНК полимеразы. Понятие о мозаичной структуре генов, первичном транскрипте, посттранскрипционном процессинге 108.48 KB
  РНК полимеразы. В ходе процесса образуются молекулы мРНК служащие матрицей для синтеза белков а также транспортные рибосомальные и другие виды молекул РНК выполняющие структурные адапторные и каталитические функции Транскрипция у эукариотов происходит в ядре.принцип комплементарного спаривания оснований в молекуле РНК G ≡ C =U и Т=А.
81519. Биологический код, понятия, свойства кода, коллинеарность, сигналы терминации 105.17 KB
  Генетический код и его свойства Необходимость кодирования структуры белков в линейной последовательности нуклеотидов мРНК и ДНК продиктована тем что в ходе трансляции: нет соответствия между числом мономеров в матрице мРНК и продукте синтезируемом белке; отсутствует структурное сходство между мономерами РНК и белка. Отсюда становится ясным что должен существовать словарь позволяющий выяснить какая последовательность нуклеотидов мРНК обеспечивает включение в белок аминокислот в заданной последовательности. Он позволяет шифровать...
81520. Роль транспортных РНК в биосинтезе белков. Биосинтез аминоацил-т-РНК. Субстратная специфичность аминоацил-т-РНК-синтетаз 125.71 KB
  У человека около 50 различных тРНК обеспечивают включение аминокислот в белок. тРНК называют адапторные молекулы так как к акцепторному концу этих молекул может быть присоединена определённая аминокислота а с помощью антикодона они узнают специфический кодон на мРНК. В процессе синтеза белка на рибосоме связывание антикодонов тРНК с кодонами мРНК происходит по принципу комплементарности и антипараллельности.
81521. Последовательность событий на рибосоме при сборке полипептидной цепи. Функционирование полирибосом. Посттрансляционный процессинг белков 111.26 KB
  Каждая эукариотическая мРНК кодирует строение только одной полипептидной цепи т. она моноцистронна в отличие от прокариотических мРНК которые часто содержат информацию о нескольких пептидах т. Кроме того на полицистронных мРНК синтез белка начинается до того как заканчивается их собственный синтез так как процессы транскрипции и трансляции не разделены.