Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 2.5.3 Використання специфікаторів доступу класу - Програмування С, С++теорія та практика (частина 2) - Studbook
Главная->Інформатика та програмування->Содержание->2.5.3 Використання специфікаторів доступу класу

Програмування С, С++теорія та практика (частина 2)

2.5.3 Використання специфікаторів доступу класу

Головною турботою класу є необхідність приховувати якомога більше інформації, аби захистити його зміст від можливого стороннього впливу. Це накладає ряд обмежень на використання даних. Тому ознакою пристойного стилю програмування на Сі+ + вважається правильне застосування специфікаторів доступу до елементів-даних та елементів-функцій класу. Таблиця описує призначення специфікаторів доступу:

Таблиця 2.1. Специфікатори доступу

риЬііс

Елементи-дані та елементи-функції доступні для функцій-елементів та інших функцій, де має місце представник класу

ргмаіе

Елементи-дані та елементи-функції доступні лише для функцій-елементів поточного класу

ргоіесіеб

Елементи-дані та елементи-функції доступні лише для функцій-елементів поточного класу та класів, похідних від нього.

 

Кожний з користувачів класу (сам клас, його представники або ж похідні класи) володіє різними привілеями доступу, що визначається відповідним ключовим словом (див. таблицю специфікаторів доступу). Розділи з різними привілеями доступу можуть з’являтися у будь-якому порядку та у будь-якій кількості. Якщо усі елементи-дані та елементи- функції класу оголосити приватними (ргіуаіе), то з таким класом ніяких операцій проводити неможливо: уся інформація з протоколу класу буде прихованою. Та навпаки, до всього, що оголошено у секції риЬііс, дозволений необмежений доступ. Щодо специфікатору ргоіееіей, елементи-дані стають доступними у похідному класі через прихований по замовчуванню покажчик ікіз :

с1азз Опе {

рго'Ьес'Ьей: іп£ а;

};

с1азз Тмо : риЬ1іс Опе {

// визначення похідного класу риЬ1іс:

VОій ехатр1е()

{

а=0; // означає £Ьіз->а=0

}

};

Якщо функція-елемент прийматиме як параметр покажчик або посилання на інший об’єкт, правило дещо змінюється: неможливо звертатися до ргоґесґесі - даних через зовнішнього користувача класу Опе:

с1азз Опе {

рго'Ьес'Ьей: іп£ а;

};

с1азз Тмо : риЬ1іс Опе {

риЬ1іс:

VОій ехатр1е(Опе &А)

{

а=0;    // означає £Ьіз->а=0

А.а=0;  // помилка доступу

}

};

 

23