c++ 내포클래스의 사용이유 정말 궁금합니다.

gyxor의 이미지

#include<iostream>
using namespace std;

class a{
    public:
    int ai;		
	a()
	{
		ai = 100;
	}
};

class b
{

     public: 

	int bi;
	void view()
	{
	a i;
    	cout <<  i.ai;
	}
};

int main()
{
           b be;
           be.view();
           return 0;
}

이러한 예제에서 class a는 class b의 정의보다 앞서야 한다는 규칙만따르면 내포클래스와 다를것이 거의 없습니다. class b 의 선언안에 내포클래스로 들어가더라도 달라지는것이 거의 없습니다.
달라지는것이 있다면 외부에서 class a 의 객체를 선언할때
b:: a kkk;
라고 선언해야 하는점.. 정도..
그렇다면 내포클래스를 사용하는 이유가 이런식으로 하나의 클래스로 묶어서 좀더 캡슐화를 시키는 것 말고는 없는것인가요?
답변부탁드립니다.
urmajest의 이미지

access scope을 제한하기 위해서

그리고

이름이 충돌되는 것도 막을 수 있어요(scoping에 따른 부산물)