значення счетчікаTCounter :: GetValue () {return count;}
У наведеній реалізації запис TCounter :: повідомляє компілятор, що реалізація функцій належить класу TCounter. Символ :: є операцією визначення області дії. p align="justify"> Друзі
Специфікатори доступу дозволяють вказати, до яких елементів класу можуть звертатися функції, в нього не входять. Однак можуть бути випадки, коли доцільно дозволити деякому класу чи функції звертатися до закритих або захищених елементів даного класу. Це можна зробити за допомогою ключового слова friend. p align="justify"> Друзями класу можуть бути оголошені інші класи чи окремі функції, як звичайні, так і є елементами деяких класів. Друзі можуть оголошуватися в будь-якому з розділів визначення класу (закритому, захищеному чи відкритому), - в якому саме, не має значення. У кожному разі дружній клас або функція буде мати повний доступ до елементів класу.
Ось приклад оголошення Друзів класу:
class SomeClass (class AnotherClass; void regularFunc (int); void OtherClass :: MemFunc (double);
// ...
};
Слід мати на увазі такі правила:
Дружність не оборотні: якщо А оголошує В іншому, це не означає, що А буде другом В. Дружба даруется , але не присвоюється .
Дружність неуспадковується: якщо А оголошує В іншому, то класи, похідні від В, не будуть автоматично друзями А.
Дружність не транзитивній: якщо А оголошує В іншому, то класи, похідні від А, що не будуть автоматично визнавати У своїм другом.
ВИКОРИСТАННЯ КЛАСУ
Слід чітко розуміти, що в момент оголошення класу і визначення його функцій-членів самих об'єктів або примірників класу не існує. Класи - це не об'єкти. Об'єктами є змінні, екземпляри класів які повинні створюватися в програмі. Наведемо приклад використання класу: main ()
{cnt;// створення об'єкта cnt типу TCounter
. SetValue (10);// виклик методу для ініціалізації
// визначення і ініціалізація покажчика на об'єкт * p = &cnt; i = p-> GetValue () ;//використання покажчика
// визначення посилання & Rp = &cnt; = Rp.GetValue ();// використання посилання
// Визначення масиву покажчиків * m [10];
// Створення та ініціалізація об'єктів (int k = 0; k <10; k + +) {
m [k] = new TCounter; [k] -> SetValue (0);
}
// Звільнення пам'яті (i = 0; i <10; i + +) delete m [i];
}