
Діаграма порівняння
Основа для порівняння | Приватний | Захищений |
---|---|---|
Успадкування властивості похідного класу | Похідний клас не може отримати доступ до приватних членів базового класу. | Похідний клас може отримати доступ до захищених членів базового класу. |
Доступність | Приватні члени класу недоступні з області класу. | Захищені члени класу недоступні з області класу, за винятком класу, отриманого негайно. |
Доступний з власного класу | Так | Так |
Доступний з похідного класу | Ні | Так |
Доступне ззовні | Ні | Ні |
Визначення приватного
Члени класу, оголошені як приватні, можуть бути отримані тільки в класі. Іншими словами, членам, оголошеним у приватному розділі класу, може бути доступна тільки функція друга і функція-член класу. Приватні члени не можуть бути отримані безпосередньо від похідного класу і недоступні з області класу.
Програма C ++ показує концепцію приватних специфікаторів доступу.
#include з використанням простору імен std; клас A {приватний: int i; public: void get () {cout <> i; }}; клас B: public A {public: void show () {i ++; cout << "Ваш введений номер після incrementcpp"> # включає використання простору імен std; Клас ссавців {public: void mammalMethod (недійсний) {cout << "Входить до категорії ссавців."У зазначеній програмі один об'єкт дочірнього класу створюється з іменем "ob", а до функції-члена батьківського класу можна звертатися за допомогою методу виклику дочірнього класу "marine_mammalMethod". Хоча до батьківського методу не можна звертатися безпосередньо з об'єктом "ob".
Визначення Захищених
Члени класу, визначені як захищені в класі, можуть бути доступні тільки через функцію-член і функцію друга класу. Ці захищені члени не можуть бути доступні з області класу, крім дочірнього класу (відразу виводяться з нього). Він слугує обмеженим цілям у спадок і успадковує властивості обмеженим чином.
Наведена нижче програма C ++ ілюструє концепцію специфікаторів захищеного доступу.
#include з використанням простору імен std; class account1 {protected: int x, y; // доступний похідному класу public: void set (int a, int b) {x = a; y = b; } void show () {cout <У наведеному вище прикладі дочірній клас успадковує властивості базового класу, оскільки елементи даних оголошуються як загальнодоступні або захищені. Це не було б можливо, якби x і y були оголошені приватними в базовому класі.
Основні відмінності між приватним і захищеним в C ++
- Захищене ключове слово може використовуватися для побудови членів класу, які є приватними для їхнього класу, але можуть бути успадковані та використані похідним класом. І навпаки, це неможливо при використанні приватного, оскільки приватні члени не можуть бути успадковані безпосередньо від похідного класу.
- Коли базовий клас успадковується за допомогою специфікатора приватного доступу, він робить всі загальнодоступні і захищені члени базового класу приватними членами похідного класу. На відміну від цього, це не стосується специфікаторів захищеного доступу.
Висновок
Приватними та захищеними є специфікатори доступу, які використовуються для встановлення видимості класу та його членів по-різному. Проте захищеність є більш гнучкою, ніж приватна.