2010-08-16 107 views
0

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

指向私有成员变量的指针是否可以在类的外部解除引用和分配?在另一个成员变量的方法中怎么样?

也许像

class A 
{ 
someClass a,b; 

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

回答

1

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

如果您授予访问(某种程度上)指向成员变量的指针而不预先确定它是“const”,那么可以将其解除引用并分配给它。对于其他成员变量的方法,同样的断言仍然是正确的。在你的例子中,你正在调用一个方法(通过成员变量“a”),提供一个指向私有成员变量“b”的指针。你在A中访问这两个私有成员变量,这是完全正确的C++。

1

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

class outer { 
    class inner { 
     int x; 
    }; 

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

...不会编译。 inner嵌套在outer中的事实不是给予outer的成员函数对inner的私有部分的任何特殊访问。

编辑:编辑后,我看不出有什么异常的话 - A()是(显然)的class A成员还包括私有成员abprivate的定义是它可以在类内部进行编码(即名称可见),但不能在类外进行编码。由于A()在课堂内,因此它们都可以看到ab

+0

这不是我的意思,虽然这是一个有趣的观点。看我的编辑。 – user383352 2010-08-16 22:22:48