为什么这样做?
#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; }
无论这是否是一个好主意,为什么它有效?公共函数ClassA :: makeNewA(int)实例化一个新的ClassA,然后使用新对象调用私有函数getId().班级自动成为自己的朋友吗?
谢谢