为什么这样做?
#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()
。班级自动成为自己的朋友吗?
由于
答案 0 :(得分:6)
是的,一个类的public
方法可以访问自己的private
成员,即使该方法在不同的实例上运行也是有意的。
我想可以说一个班级自动成为朋友&#34;本身。
答案 1 :(得分:2)
所有类方法,无论是否静态,都是自动&#34;朋友&#34;的 类。 Friend用于允许外部函数和类访问 去上课。课程总是自己的朋友&#34;。
答案 2 :(得分:2)