Estoy aprendiendo conceptos básicos de OOP en C++ y me encontré con un problema lógico.Lógica de programación orientada a objetos
#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();
}
lo que quería saber en el código anterior por qué estoy acceder a la x.i
[Línea 19], que es un miembro privado en los diferentes object.Isn't el ámbito privado restringido a la misma clase, incluso si el objeto se pasa como un parámetro?
Piensa en cuán fea sería una tarea tan común como tu ejemplo si no estuviera permitida. El objetivo de 'private' no es restringir el acceso desde _objects_" foráneos ", sino encapsular _code_. Y el código de una clase nunca se preocupa realmente por ningún objeto en particular, excepto por el puntero 'this' que se pasa implícitamente a cada función miembro no estática. – leftaroundabout