class printer {
int nono;
public:
printer();
~printer();
private:
class Impl;
Impl *p;//只能声明嵌套类的指针和引用
int static pri;
int yyy;
};
class printer::Impl {
public:
Impl() { printer::pri = 1; };
Impl(printer out) {
printer::pri = 1; //可以访问外部类的 私有!!!!
out.nono = 1;// 可以访问外部类的 私有!!!!
out.yyy = 1;//可以访问外部类的 私有!!!!
};
~Impl() { };
int a;
private:
int b;
int static c;
};
printer::printer() :p(new Impl){
p->a = 1;
p->b = 1;// 不能访问嵌套类的私有,错误
p->c = 1;// 不能访问嵌套类的私有,错误
}
printer::~printer() {
}
1.前项声明只能是指针或引用
2.外围类不能访问嵌套类中私有成员
3.嵌套类可以访问外部内的私有成员,但是网上都说外围类对嵌套类成员的访问没有任何特权,嵌套类对外围类成员的访问也同样如此,它们都遵循普通类所具有的标号访问控制 ,????