Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: malan
Udoskonalił: Piotr DejaVu Szawdyński
Pomógł: Elaine
Język C++

protected

[słowo kluczowe] Modyfikator dostępu stosowany przy dziedziczeniu.

Opis szczegółowy

Modyfikator dostępu, określający poziom dostępu do poszczególnych składowych klasy. Niniejszy modyfikator dostępu stosuje się przy dziedziczeniu i ma on następujące własności:

1) Słowo kluczowe protected nie zezwala na dostęp do stałych, zmiennych, metod itp. spoza klasy (tak jak w przypadku modyfikatora dostępu » standard C++private).

2) Składowe klasy oznaczone jako protected są widoczne w obrębie klasy pochodnej.

3) Składowe klasy bazowej oznaczone jako protected mają dostęp chroniony bądź prywatny w klasie pochodnej w zależności od użytego prawa dostępu przy dziedziczeniu. Jeśli klasa została odziedziczona z modyfikatorem » standard C++public lub protected, poziom dostępu do składowych oznaczonych jako protected zostanie zachowany.

Dodatkowe informacje

Słowo kluczowe protected w polskiej terminologii jest tłumaczone jako modyfikator o dostępie chronionym.

Przykład

Poprawne użycie:
C/C++
#include <iostream>

class cKoszyk
{
protected:
    int iloscProduktow;
    double cena;
   
public:
    cKoszyk::cKoszyk();
};

// Wyzerowanie zmiennych
cKoszyk::cKoszyk()
    : iloscProduktow( 0 )
     , cena( 0 )
{
};

class cCzynnosci
    : public cKoszyk
{
public:
   
    void dodaj_produkt( const char * nowy, double cena_produktu )
    {
        //...
        iloscProduktow++;
        cena += cena_produktu;
    }
   
    int policz_produkty()
    {
        return iloscProduktow;
    }
   
    double oblicz_cene()
    {
        return cena;
    }
};

int main()
{
    cCzynnosci zakupy;
   
    zakupy.dodaj_produkt( "Mleko", 2.20 );
    zakupy.dodaj_produkt( "Płatki", 7.56 );
    zakupy.dodaj_produkt( "Masło", 1.99 );
   
    std::cout << "W koszyku znajduje sie: " << zakupy.policz_produkty() << " produktow" << std::endl;
    std::cout << "Cena wszystkich produktow to: " << zakupy.oblicz_cene();
   
    return 0;
}
Błędne użycie:
C/C++
#include <iostream>

class cKoszyk
{
protected:
    int iloscProduktow;
    double cena;
   
public:
    cKoszyk::cKoszyk();
};

// Wyzerowanie zmiennych
cKoszyk::cKoszyk()
    : iloscProduktow( 0 )
     , cena( 0 )
{
};

class cCzynnosci
    : public cKoszyk
{
public:
   
    void dodaj_produkt( const char * nowy, double cena_produktu )
    {
        //...
        iloscProduktow++;
        cena += cena_produktu;
    }
   
    int policz_produkty()
    {
        return iloscProduktow;
    }
   
    double oblicz_cene()
    {
        return cena;
    }
};

int main()
{
    cCzynnosci zakupy;
   
    zakupy.dodaj_produkt( "Mleko", 2.20 );
    zakupy.dodaj_produkt( "Płatki", 7.56 );
    zakupy.dodaj_produkt( "Masło", 1.99 );
   
    std::cout << "W koszyku znajduje sie: " << zakupy.iloscProduktow << " produktow" << std::endl;
    std::cout << "Cena wszystkich produktow to: " << zakupy.cena;
   
    return 0;
}
Błąd:
`int cKoszyk::iloscProduktow' is protected, `double cKoszyk::cena' is protected

Zagadnienia powiązane

publicPubliczny modyfikator dostępu. (słowo kluczowe)
privatePrywatny modyfikator dostępu. (słowo kluczowe)

Linki zewnętrzne