Class А
{
public:
static int count; // Оголошення у класі
};
…
int A::count; // Визначення у глобальній області
// За умовчанням ініціалізується нулем
//Приклад ініціалізації довільним значенням
// int A::count = 10;
2. Статичні поля доступні як через ім'я класу, так і через ім'я об'єкту:
А *а, b;
cout << A::count << a->count << b.count;
// Буде виведено одне й теж
3. На статичні поля розповсюджується дія специфікаторів доступу, тому статичні поля, описані як private, не можна змінити за допомогою операції доступу до зони дії, як описано вище. Це можна зробити тільки за допомогою статичних методів(див. далі).
4. Пам'ять, яку займає статичне поле, не враховується при визначенні розміру об'єкту за допомогою операції sizeof.
2.3.2 Статичні методи
Статичні методи призначені для звернення до статичних полів класу. Вони можуть звертатися безпосередньо тільки до статичних полів і викликати тільки інші статичні методи класу, тому що їм не передається прихована вказівка this. Звернення до статичних методів проводиться так само, як до статичних полів – або через ім'я класу, або, коли хоча б один об'єкт класу вже створений, через ім'я об'єкту.
Class А
{
static int count; // Поле count – приховане
public:
static void inc_count(){ count++: }
};
A::int count; // Визначення в глобальній області
Дата добавления: 2014-12-26; просмотров: 634;