Програмування на С і С++. Вказівник this
// Зайві this:
cout << "\nNumber = " << this->Number;
cout << " Amount = " << this->Amount;
cout << " Meaning = " << this->Meaning;
}
};
// Ініціалізація статичного компонента:
int cell::Amount = 0;
void main(void)
{ cell A;// Об'єкт зі значенням, що умовчується.
A.display();
cell B(200.0);
cell C(300.0);
B.display();
C.display();
}Результат виконання програми:
Number = 1 Amount = 1 Meaning = 0
Number = 2 Amount = 3 Meaning = 200
Number = 3 Amount = 3 Meaning = 300
Майже незамінним і дуже зручним вказівник this стає в тих випадках, коли в тілі приналежної класу функції потрібно явно задати адресу того об'єкта, для якого вона викликана. Наприклад, якщо в класі потрібна функція, що поміщає адресу обраного об'єкта чи класу в масив яка включає конкретний об'єкт класу в список, те таку функцію складно написати без застосування вказівника this. Дійсно, при організації зв'язних списків, ланками яких повинні бути об'єкти класу, необхідно включати в зв'язку ланок вказівник саме на той об'єкт, що у даний момент обробляється. Це включення повинне виконати якась функція-компонент класу. Однак конкретне ім'я об'єкта, що включається, у момент написання цієї приналежної класу функції недоступно, тому що його набагато пізніше довільно вибирає програміст, використовуючи клас як тип даних. Можна передавати такої функції посилання чи вказівник на потрібний об'єкт, але набагато простіше використовувати вказівник this.
Отже, повторимо, коли вказівник this використаний у функції, що належить класу, наприклад, з ім'ям ZOB, те він має за замовчуванням тип ZOB *const і завжди дорівнює адресі того об'єкта, для якого викликана компонентна функція. Якщо в програмі для деякого класу X визначити об'єкт: