成员变量的方法是否可以访问同一个类中的其他私有成员变量?我想到了一个仿函数成员变量。
指向私有成员变量的指针是否可以取消引用并分配给类外?另一个成员变量的方法怎么样?
也许像
class A
{
someClass a,b;
A(){a(&b);}
}
答案 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 ++。