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.

   


 

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

65484. ФОРМУВАННЯ ФІНАНСОВОГО МЕХАНІЗМУ ДІЯЛЬНОСТІ СТРАХОВОЇ КОМПАНІЇ 356 KB
  Збалансований і налагоджений фінансовий механізм дозволяє формувати і використовувати активи страхової компанії з метою забезпечення максимального рівня її платоспроможності. Однак аналіз наукових праць свідчить що питання формування фінансового механізму...
65485. ФІНАНСОВА ПОЛІТИКА РОЗВИТКУ СІЛЬСЬКОГО ГОСПОДАРСТВА УКРАЇНИ: ТЕОРІЯ, МЕТОДОЛОГІЯ, ПРАКТИКА 432 KB
  Фінансова політика держави у сучасних умовах ринкових перетворень виступає визначальною для розвитку національної економіки. Ускладнення процесів економічних трансформацій, посилення їх динамізму, фінансова криза та її негативні наслідки виявили...
65486. БЕЛЬГІЯ ТА КОЛОНІАЛЬНИЙ ПОДІЛ АФРИКИ 172 KB
  ХХ століття стало свідком краху колоніальних імперій, проте інтерес дослідників до різних аспектів історії колоніальної політики не слабшає. У сучасному світі в істориків з'являються все нові можливості для вивчення історичних явищ і розширення проблематики своїх досліджень...
65487. Метод розрахунку довговічності елементів авіаційних конструкцій, навантажених розтягом-стиском та згином 3.54 MB
  Метод розрахунку довговічності конструкцій за номінальними напруженнями ґрунтується на використанні понять ефективного коефіцієнта концентрації напружень і коефіцієнта якості конструкції. Такий підхід дозволяє на етапі проектування уникнути значної частини тривалих і коштовних втомних...
65488. Окупаційний режим та єврейське населення Дніпропетровщини 1941-1943 роки 218.5 KB
  Трагедія єврейського населення Дніпропетровській області не знайшла ще повномасштабного відпрацьовування хоча її фактична сторона може являти собою вагомий додаток до характеристики окупаційної політики нацистів стосовно представників даної національності.
65489. ТЕРМОЕЛЕКТРИЧНИЙ ПЕРЕТВОРЮВАЧ З КЕРОВАНИМ ПРОФІЛЕМ ТЕМПЕРАТУРНОГО ПОЛЯ 648 KB
  Тому підвищення точності вимірювання температури актуальна та важлива наукова і практична задача вирішення якої може дати значний економічний ефект. Аналіз показує що точність приладів вимірювання температури росте однак похибка вимірювання температури зменшується мало бо у вимірювальному...
65490. Вплив бобово-злакових травосумішей на родючість та протиерозійну стійкість дерново-підзолистого еродованого ґрунту західного Передкарпаття 305 KB
  Для досягнення цієї мети передбачалось вирішити наступні завдання: встановити ґрунтозахисну ефективність багаторічних бобовозлакових травостоїв та їх вплив на стік і змив ґрунту; виявити зміни агрохімічних і воднофізичних показників родючості ґрунту в процесі залуження...
65491. МАТЕМАТИЧНЕ ТА ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ІЄРАРХІЧНОЇ ДЕКОМПОЗИЦІЇ, ІНДЕКСУВАННЯ, КЛАСИФІКАЦІЇ ТА АНАЛІЗУ ВІЗУАЛЬНИХ ОБРАЗІВ 280 KB
  Широке використання різних інформаційних технологій зумовлює актуальність проблеми розпізнавання образів. Задачі індексування та пошуку зображень на основі їх вмісту (Content-based image retrieval − CBIR) у графічних базах даних із мільйонами образів є актуальними в інформаційних системах.
65492. Математичне та програмне забезпечення обчислювальних машин і систем 363.5 KB
  Одним із основних напрямків розвитку інформаційних технологій є територіально розподілене опрацювання даних в компютерній мережі що повязано з необхідністю інтеграції розподілених...