Препоръчано, 2024

Избор На Редактора

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

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

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

Основа за сравнениечастенЗащитена
Наследяване на свойство на извлечения клас
Извлеченият клас няма достъп до частни членове от основния клас.Извлеченият клас може да има достъп до защитени от базовия клас членове.
Достъпност
Частните членове на класа са недостъпни извън обхвата на класа.Защитените членове на класа са недостъпни извън обхвата на класа, с изключение на класа, получен незабавно.
Достъпно от собствения класдада
Достъпно от производния класНеда
Достъпни отвънНеНе

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

Членовете на класа, обявени за частни, могат да бъдат извлечени само в рамките на класа. С други думи, членовете, декларирани в частната секция на класа, могат да бъдат достъпни само от функцията за приятели и членската функция на класа. Частните членове не могат да се получават директно от извлечения клас и са недостъпни извън обхвата на класа.

Програмата C ++ показва концепцията за частни спецификатори за достъп.

 #include using namespace std; клас A {private: int i; public: void get () {cout <> i; }}; клас B: публичен A {public: void show () {i ++; cout << "Вашето въведено число след incrementcpp"> # включва използването на пространство от имена std; клас бозайник {public: void mammalMethod (void) {cout << "Попада под категорията на бозайници." 

В горепосочената програма се създава един обект от дъщерния клас с име “ob”, а членската функция на родителския клас може да бъде достъпна чрез метод на извикващия клас “marine_mammalMethod”. Въпреки че родителският метод не може да бъде достъпен директно с обект “ob”.

Определение на защитените

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

Дадената по-долу програма C ++ илюстрира концепцията за спецификатори на защитен достъп.

 #include using namespace std; class account1 {protected: int x, y; // достъпен за произволен клас public: void set (int a, int b) {x = a; у = б; } void show () {cout < 

В горния пример детевият клас наследява свойствата на базовия клас, защото членовете на данните са обявени за публични или защитени. Не би било възможно, ако x и y бяха обявени за частни в базовия клас.

Ключови разлики между частни и защитени в C ++

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

заключение

Частни и защитени са спецификаторите за достъп, които се използват за различна видимост на класа и неговите членове. Защитените обаче са по-гъвкави от частните.

Top