Poznaję podstawowe pojęcia OOP w C++ i natknąłem się na logiczny problem.Logika programowania obiektowego
#include <iostream>
#include <conio.h>
using namespace std;
class A {
int i;
public:
void set(int x) {
i=x;
}
int get() {
return i;
}
void cpy(A x) {
i=x.i;
}
};
int main()
{
A x, y;
x.set(10);
y.set(20);
cout << x.get() << "\t" << y.get() << endl;
x.cpy(y);
cout << x.get() << "\t" << y.get() << endl;
getch();
}
Chciałem wiedzieć, w powyższym kodzie Dlaczego jestem w stanie uzyskać dostęp x.i
[Linia 19], przy czym członek prywatny w różnych object.Isn't zakres prywatny ograniczony do tej samej klasy, nawet jeśli obiekt jest przekazywany jako parametr?
Pomyśl, jak brzydkie byłoby takie typowe zadanie, jak na przykład, gdyby nie było dozwolone. Punkt 'private' nie ogranicza dostępu do" obcych "_objects_, lecz do enkapsulacji _code_. Kod w klasie nigdy nie zajmuje się żadnym konkretnym obiektem, z wyjątkiem "tego" wskaźnika, który jest niejawnie przekazywany do każdej niestatycznej funkcji składowej. – leftaroundabout