这是什么C++语法?该怎么处理

这是什么C++语法?
我知道这种用法,但是不知道这属于什么语法,请教高手。
在源文件.cpp中包含(#include)一个类的头文件,在头文件中使用这个类。
只能在头文件中定义指针变量,并且要用一种特别的语法:
namespace oracle
{
 namespace occi
 {
  class CFor;
 }
}

// 使用者
// 头文件
#pragma once
namespace oracle
{
    namespace occi
    {
        class CFor;
    }
}
class CUse
{
public:
    CUse(void);
    ~CUse(void);
public:
    oracle::occi::CFor *m_pFor;
};
// 源文件
#include "Use.h"
#include "For.h"
CUse::CUse(void)
{
    m_pFor->test();
}
CUse::~CUse(void)
{
}

// 被使用者
// 头文件
#pragma once
namespace oracle
{
    namespace occi
    {
        class CFor
        {
        public:
            CFor(void);
            ~CFor(void);
        public:
            void test();
        };
    }
}
// 源文件
#include "For.h"
using namespace oracle::occi;
CFor::CFor(void)
{
}
CFor::~CFor(void)
{
}
void CFor::test()
{
}

url:http://greatverve.cnblogs.com/archive/2012/12/02/cpp-what.html
谁如果知道哪本书上有讲解,请指教,谢谢。
------解决方案--------------------
在类的头文件中,如果要用到其他的类,而且该类只是被定义为指针,引用,或者形参,返回值,那么该类最好只是前向定义。此目的在于避免多个源文件之间的编译依赖,编译器接受这样的写法,而且也都鼓励这样写
这边应该是相同道理吧