C++的嵌套类意思就是类中定义的类,它和外围类的成员类似,也被相应的访问权限修饰符修饰。
1 嵌套类可以直接方位外围类中的static成员变量。
2 嵌套类可以通过引用,指针,或者对象来访问外围类的成员,不管该成员是public,private,protected。
3 嵌套类被private修饰的时候就不能在用户代码中被定义对象,因为是private的
4 外围类对嵌套类的非public成员没有访问权限,对public成员具有访问权限
5 外围类不能直接访问嵌套类的public静态成员,必须加上限定符。
示例程序如下:
//QT.h
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"
#include <iostream>
using 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<<bb<<endl;
cout<<bd<<endl;
pBa = new BA();
cout<<pBa->ba<<endl;
cout<<pBa->bb<<endl;
cout<<pBa->bc<<endl;
cout<<pBa->bd<<endl;
delete pBa;
pBa = NULL;
}
//main.cpp
#include <iostream>
#include "QT.h"
using namespace std;
void main()
{
BA T;
T.funp(NULL);
//BA::SB 当修饰符为private时候,不能被外部访问
BA::SB Tb;
Tb.func(NULL);
}