[C++] 头文件的有关问题

[C++] 头文件的问题
有两个class, class Edge要用到class Node。我不明白为什么在Edge 里不是写成#include "Node.h" ,而是直接写了class Node。两者的区别是什么,能不能请高手详细讲下这两者分别用在什么情况下,谢谢
class Node {
public:
Point<long> pt;
vector<Edge*> edges;
        ..........
Node(void);
~Node(void);
};

--------------------------------------------------------------------

class Node;

class Edge
{
public:
Node* n1; 
Node* n2;
Edge(void);
        ......
Edge(Node* n1_, Node* n2_);
~Edge(void);
};

------解决方案--------------------
补充一下,只涉及到指针。 如果涉及到类对象,是要#include的。
------解决方案--------------------
1L+1
说白了就是前置声明,这种技巧用得很多,并且是推荐滴,至少你少包含个头文件,编译速度也能快不少~
另外正像2L说的,但不仅限于此,对于引用,也是成立的,但唯独对对象不好办,其原因也很简单,你前置声明后,编译器只知道存在这个类型,但不知道这个类型具体是什么,对于指针,指针的长度是固定的,引用也类似,但对于对象,编译器至少得知道这个对象的size,否则就编译不下去了。