HI,
在C++内部类中,
class A {
public:
void f1();
private:
void f2();
class B {
private void f3();
};
}
Run Code Online (Sandbox Code Playgroud)
内部类(B)是否有指向其父类(A)的指针?(就像在Java中一样).并且B可以调用其父类的公共/私有方法(就像在Java中一样).
谢谢.
Jer*_*fin 28
否 - 在C++中,嵌套类只影响名称和可见性,而不影响类本身的语义.就生成的代码而言,嵌套类与未嵌套的类没有区别.
所有改变的是可见性和名称(例如,如果它在private:外部类的一部分中,它对外部世界是不可见的,如果它在一个public:部分中,它是可见的,但(当然)命名它你使用outer_class::inner_class.它仍然是一个完全独立的类 - 例如,您可以创建内部类的实例而无需创建外部类的任何实例.
编辑:对不起,我错过了你的部分问题.在C++ 0x中,内部类可以访问外部类的私有部分 - 实质上,就好像外部类已经将内部类声明为其朋友,因此私有名称是可见的,但是您仍然需要在它可以调用外部类的任何非静态成员函数之前,将它传递给类外部对象的引用.
虽然事实并非如此,但我相信大多数编译器已经实现了这一特定部分.