Why does this work?
#include <stdio.h>
class ClassA
{
public:
    ClassA(int id) : my_id(id) { };
    ClassA * makeNewA(int id)
    {
        ClassA *a = new ClassA(id);
        printf("ClassA made with id %d\n", a->getId());
        return a;
    };
private:
    int getId() {
        return my_id;
    };
private:
    int my_id;
};
int main()
{
    ClassA a(1);
    ClassA *b = a.makeNewA(2);
    return 0;
}
Irrespective of whether or not it's a good idea, why does it work? The public function ClassA::makeNewA(int) instantiates a new ClassA and then calls a private function getId() using the new object. Is a class automatically a friend of itself?
Thanks
Yes, it is intentional that a class's public methods can access its own private members, even if that method is acting on a different instance.
I guess one could say that a class automatically is a "friend" of itself.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With