为什么我可以通过指针访问私有数据成员,我应该这样做吗?

时间:2014-05-05 15:48:43

标签: c++ pointers private member access-modifiers

我刚刚发现我可以用C ++编写,编译得很好(MinGW和VC ++):

class A
{
private:
   void doSth();
   A* foo;
   A* bar;
};

void A::doSth()
{
  foo->bar;
}

bar的成员字段foo是私有的。 为什么我可以访问它?我应该这样做吗?

2 个答案:

答案 0 :(得分:2)

在C ++中,private表示访问仅限于同一个类,而不是同一个对象实例。

答案 1 :(得分:1)

您还会注意到,在A的方法中,A私有变量的其他实例可能是访问权限。像

A::baz(A& other) {
    other.bar; // legal
}

可见性是在班级,而不是实例级别。