In C++, private
means the access is limited to the same class, not to the same object instance.
Why can I access private data members through pointers and should I do this?
-
15-07-2023 - |
Pergunta
I just discovered that I can do this in C++, which compiles just fine (MinGW and VC++):
class A
{
private:
void doSth();
A* foo;
A* bar;
};
void A::doSth()
{
foo->bar;
}
The member field bar
of foo
is private. Why can I access it and should I do so?
Solução
Outras dicas
You'll also notice that in A's methods, other instances of A's private variables may be access. Like
A::baz(A& other) {
other.bar; // legal
}
Visibility is at the class level, not instance level.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow