1 嵌套类可以直接方位外围类中的static成员变量。
2 嵌套类可以通过引用,指针,或者对象来访问外围类的成员,不管该成员是public,private,protected。
3 嵌套类被private修饰的时候就不能在用户代码中被定义对象,因为是private的
4 外围类对嵌套类的非public成员没有访问权限,对public成员具有访问权限
5 外围类不能直接访问嵌套类的public静态成员,必须加上限定符。
示例程序如下:
//QT.h
#ifndef DDXX_QT_H
#define DDXX_QT_H
class BA
{
class SB;
public:
BA();
~BA();
int bc;
static int bd;
void funp(SB* pSb);
private:
int ba;
static int bb;
public:
class SB
{
public:
SB();
~SB();
int sa;
static int sb;
void func(BA* pBa);
private:
int sc;
static int sd;
};
};
#endif//QT.cpp
#include "QT.h" #includeusing namespace std; int BA::bd = 12; int BA::bb = 13; int BA::SB::sb = 21; int BA::SB::sd = 23; BA::BA() { ba = 1; bc = 2; } BA::~BA() { } void BA::funp(BA::SB* pSb) { pSb = new BA::SB(); pSb->sa; pSb->sb; //pSb->sc; //private //pSb->sd; //private delete pSb; pSb = NULL; } BA::SB::SB() { } BA::SB::~SB() { } void BA::SB::func(BA* pBa) { cout< ba< bb< bc< bd<
//main.cpp
#include#include "QT.h" using namespace std; void main() { BA T; T.funp(NULL); //BA::SB 当修饰符为private时候,不能被外部访问 BA::SB Tb; Tb.func(NULL); }