Рекомендуем, 2024

Выбор редакции

Разница между частным и защищенным в C ++

Существует три типа защиты доступа, определенные в языке программирования C ++ для сокрытия данных. Сокрытие данных является неотъемлемой частью объектно-ориентированного программирования. Частные и защищенные ключевые слова обеспечивают уровень защиты доступа, позволяющий скрыть данные и функции в классе. Закрытые члены не могут быть унаследованы, в то время как защищенный член может быть унаследован, но в ограниченном диапазоне. Эти спецификаторы указывают на видимость членов, где закрытый является более ограничительным, чем защищенным.

Сравнительная таблица

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

Определение частного

Члены класса, объявленные как частные, могут быть получены только внутри класса. Другими словами, члены, объявленные в закрытом разделе класса, могут быть доступны только с помощью функции-друга и функции-члена класса. Закрытые члены не могут быть получены производным классом напрямую и недоступны вне области действия класса.

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

  1. Защищенное ключевое слово может использоваться для создания членов класса, которые являются частными для их класса, но могут быть унаследованы и использованы производным классом. И наоборот, это невозможно при использовании private, поскольку приватные члены не могут наследоваться напрямую производному классу.
  2. Когда базовый класс наследуется с использованием спецификатора закрытого доступа, он делает все открытые и защищенные члены базового класса закрытыми членами производного класса. В отличие от этого, дело обстоит не так в спецификаторах защищенного доступа.

Заключение

Частные и защищенные являются спецификаторами доступа, которые используются для различного определения видимости класса и его членов. Тем не менее, защищенный более гибкий, чем частный.

Top