其他成员变量方法中成员变量的隐私

时间:2010-08-16 22:08:03

标签: c++ class membership subclass privacy

成员变量的方法是否可以访问同一个类中的其他私有成员变量?我想到了一个仿函数成员变量。

指向私有成员变量的指针是否可以取消引用并分配给类外?另一个成员变量的方法怎么样?

也许像

class A
{
 someClass a,b;

 A(){a(&b);}
}

2 个答案:

答案 0 :(得分:1)

至少如果我理解你的问题,答案是否定的。例如,代码如下:

class outer { 
    class inner { 
        int x;
    };

    void use_x() { inner::x = 0; }
};

...不会编译。 inner嵌套在outer内部的事实 not outer的成员函数提供对inner私有部分的任何特殊访问权限。< / p>

修改:编辑后,我看不到任何异常 - A()(显然)是class A的成员,其中还包括私人成员a和{{ 1}}。 b的定义是,在类内部进行编码是可访问的(即,名称是可见的),而不是类外的代码。由于private位于课程内,因此A()a都可见。

答案 1 :(得分:1)

每当调用成员变量的方法时,除非其类型是正在定义的类,否则您将无法访问私有成员变量。

如果您以某种方式访问​​指向成员变量的指针,而不是预先确定它是“const”,是的,可以取消引用并分配给它。对于其他成员变量的方法,同样的断言仍然是正确的。

问题被编辑后:
在您的示例中,您正在调用一个方法(通过成员变量“a”),提供指向私有成员变量“b”的指针。您正在A中访问这两个私有成员变量,这是完全正确的c ++。