[C++] Metody Klasy
Ostatnio zmodyfikowano 2015-11-15 14:45
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: class CKlasa { private: int a; public: CKlasa( int liczba ) : a( liczba ) { } int fun( CKlasa & ob ); };
int CKlasa::fun( CKlasa & ob ) { int b = ob.a; 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ł |
|
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. |
|
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 ;) |
|
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. |
|
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. |
|
Roofy5 Temat założony przez niniejszego użytkownika |
» 2015-11-15 14:45:55 ok, dziękuję za wytłumaczenie ;) |
|
« 1 » |