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