Рекомендуємо, 2020

Вибір Редакції

Різниця між приватним і захищеним в C ++

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

Діаграма порівняння

Основа для порівнянняПриватнийЗахищений
Успадкування властивості похідного класу
Похідний клас не може отримати доступ до приватних членів базового класу.Похідний клас може отримати доступ до захищених членів базового класу.
Доступність
Приватні члени класу недоступні з області класу.Захищені члени класу недоступні з області класу, за винятком класу, отриманого негайно.
Доступний з власного класуТакТак
Доступний з похідного класуНіТак
Доступне ззовніНіНі

Визначення приватного

Члени класу, оголошені як приватні, можуть бути отримані тільки в класі. Іншими словами, членам, оголошеним у приватному розділі класу, може бути доступна тільки функція друга і функція-член класу. Приватні члени не можуть бути отримані безпосередньо від похідного класу і недоступні з області класу.

Програма 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 ++

  1. Захищене ключове слово може використовуватися для побудови членів класу, які є приватними для їхнього класу, але можуть бути успадковані та використані похідним класом. І навпаки, це неможливо при використанні приватного, оскільки приватні члени не можуть бути успадковані безпосередньо від похідного класу.
  2. Коли базовий клас успадковується за допомогою специфікатора приватного доступу, він робить всі загальнодоступні і захищені члени базового класу приватними членами похідного класу. На відміну від цього, це не стосується специфікаторів захищеного доступу.

Висновок

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

Top