Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Metody Klasy

Ostatnio zmodyfikowano 2015-11-15 14:45
Autor Wiadomość
Roofy5
Temat założony przez niniejszego użytkownika
[C++] Metody Klasy
» 2015-11-14 22:38:12
Witam,

Mam pytanie odnośnie metod klasy. Otóż mam taki kod:

C/C++
class CKlasa
{
private:
    int a;
public:
    CKlasa( int liczba )
        : a( liczba )
    { }
    int fun( CKlasa & ob );
};

int CKlasa::fun( CKlasa & ob )
{
    int b = ob.a; // <----- w tym miejscu odnoszę się do prywatnego składnika
    b += a;
    return b;
}

I teraz moje pytanie. Dlaczego metoda fun ma dostęp do prywatnych składników obiektu przesyłanego przez parametr? Wiadomo że metoda ma dostęp do składników prywatnych klasy w której się znajduje, ale w tym wypadku ma dostęp do innego obiektu. Niby ten obiekt jest tej samej klasy, ale wydaje mi się że jest to w pewien sposób pogwałcenia prawa enkapsulacji wobec obiektu "ob".
Czy ta metoda nie powinna być zaprzyjaźniona do klasy?

Czekam na wyjaśnienia ;)

Pozdrawiam Michał
P-140138
pekfos
» 2015-11-14 22:42:15
Czy ta metoda nie powinna być zaprzyjaźniona do klasy?
Znaczy się, czy metoda nie powinna być zaprzyjaźniona z klasą, do której należy? Trochę bez sensu. Po to należy do klasy, by miała dostęp. Po to w ogóle są klasy.
P-140139
Roofy5
Temat założony przez niniejszego użytkownika
» 2015-11-14 22:51:08
Na zajęciach profesur podczas tłumaczenia działania konstruktora kopiującego powiedział że aby ten konstruktor miał dostęp do obiektu wysyłanego w parametrze, jest automatycznie zaprzyjaźniony do klasy. No i właśnie to mi nie daje spokoju ;)
P-140140
pekfos
» 2015-11-14 23:55:21
Na zajęciach profesur podczas tłumaczenia działania konstruktora kopiującego powiedział że aby ten konstruktor miał dostęp do obiektu wysyłanego w parametrze, jest automatycznie zaprzyjaźniony do klasy
Widać zapomniało mu się dodać "jak wszystkie inne metody", chociaż w ogóle nie powinien wyskakiwać z przyjaźnią w wyjaśnianiu tego. Jest ogólna reguła, wystarczyło ją podać. Eh, nie uważasz chyba, że profesor musi się znać na tym, co wykłada? Albo chociaż, że nie będzie popełniał błędów? Same studia nie nauczą programowania, między innymi dlatego.
P-140142
Monika90
» 2015-11-14 23:55:40
Konstruktory to funkcje składowe i jako takie mają dostęp do prywatnych i chronionych składników swojej klasy.
P-140143
Roofy5
Temat założony przez niniejszego użytkownika
» 2015-11-15 14:45:55
ok, dziękuję za wytłumaczenie ;)
P-140167
« 1 »
  Strona 1 z 1