首页 > 代码库 > C++嵌套类的使用

C++嵌套类的使用

C++的嵌套类意思就是类中定义的类,它和外围类的成员类似,也被相应的访问权限修饰符修饰。
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);
	
}



C++嵌套类的使用