我在我们的社区和外部阅读了一些关于嵌套类的帖子,我很困惑。
据我所知,在 C++ 中,嵌套类与分离/独立类没有任何区别。
当我试图更好地理解这个概念时,我写了一个简单的代码,我发现一个内部类可以访问一个外部类,而无需与外部类建立友元。
例如:
class Outer {
private : // default access modifier
int x;
static int sx;
public:
class Inner {
public:
void changeOuterDataMemberValues(int value) {
sx = value; // changes the private static data member of Outer.
Outer out;
out.x = value; // changes the private data member via object (not via class!)
}
void printMyOuterDataMember() {
cout << sx; // prints the private data member of Outer.
}
};
};
class Lonesome {
void tryingToChangeDataMemberValue(int value) {
Outer::sx = value; // cannot change the private static data member of Outer.
}
};
int Outer::sx;
您可以看到嵌套在外部类中的内部类可以访问它的(外部类)数据成员,而作为独立类的孤独类不能访问外部类的数据成员。
如果这是一个重复或愚蠢的问题,我深表歉意,但我只想与你们确认,嵌套类和独立类(两个不同的类,它们不有内/外关系)。
谢谢大家 辛迪加 =]
最佳答案
C++03 和 C++11 在这方面是有区别的。所以答案因您使用的编译器而异。
如果您使用的是 C++03 兼容编译器,则:
嵌套类无法访问封闭类的所有成员。
如果您使用的是 C++11 兼容编译器,那么:
嵌套类可以访问封闭类的所有成员。嵌套类仅被视为该类的另一个成员。
C++03 标准 11.8 嵌套类:
§1
The members of a nested class have no special access to members of an enclosing class, nor to classes or functions that have granted friendship to an enclosing class; the usual access rules shall be obeyed.
C++11 标准 11.7 嵌套类:
A nested class is a member and as such has the same access rights as any other member.
关于C++ 嵌套类 - 内部/外部关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607226/