0

Do the methods of a member variable have access to other private member variables within the same class? I have in mind a functor member variable.

Can a pointer to a private member variable be dereferenced and assigned to, outside of the class? What about in the method of another member variable?

Maybe something like

class A
{
 someClass a,b;

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

2 回答 2

1

至少如果我正确理解你的问题,答案是否定的。例如,像这样的代码:

class outer { 
    class inner { 
        int x;
    };

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

...不会编译。inner嵌套在 of 内部的事实outer不会为成员函数提供任何outer特殊访问inner.

编辑:后期编辑,我没有看到任何不寻常的地方—— A()(显然)是其中的成员,class A其中还包括私人成员ab. 的定义private是类内部的代码可以访问(即名称可见),但类外部的代码不能。由于A()在类内,两者ab对它都是可见的。

于 2010-08-16T22:16:15.147 回答
1

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

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

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

于 2010-08-16T22:20:53.510 回答