7.2. Specifikátor protected

Časová náročnost
Časová náročnost: 6 minut

Specifikátor protected se může vyskytovat kdekoliv v deklaraci třídy, typicky se však vyskytuje po deklaraci privátních členů, ale před členy veřejnými. Viz následující syntaxe:

upozornění
class jméno-třídy {
   // privátní-členy
protected:   // volitelné
   // chráněné členy
public:
   // veřejné členy
};


Když je chráněný člen základní třídy děděn odvozenou třídou jako veřejný, stane se chráněným členem odvozené třídy. Jestliže je děděna základní třída jako privátní, chráněný člen základní třídy se stane privátním členem odvozené třídy.

Základní třída může být také děděna odvozenou třídou jako chráněná. V takovém případě se veřejné a chráněné členy základní třídy stanou chráněnými členy odvozené třídy.

Specifikátor protected je možné použít také u struktur.

Následující program ukazuje jak jsou chráněné členy děděny jako veřejné.

src/7_3.cpp
Příklad 7.3.
#include <iostream.h>

class base {
protected:  
  int a, b; 
public:
  void setab(int n, int m) { a = n; b = m; }
};

class derived : public base {
  int c;
public:
  void setc(int n) { c = n; }

  // tato funkce ma pristup k a i b ze zakladni tridy
  void showabc() { 
    cout << a << ' ' << b << ' ' << c << '\n'; 
  }
};

int main()
{
  derived ob;

  ob.setab(1, 2); 
  ob.setc(3);
  
  ob.showabc(); 

  return 0;
}