求解释c++结构体。。。

struct Snake
{
Snake() :next(NULL), before(NULL)
{
pt.x = 0; pt.y = 0;
}
Snake(const POINT &npt, Snake *, Snake *);
POINT pt;
Snake * next, *before;
} snake; //定义蛇头
在学windows api,找了个贪吃蛇,这段代码实在看不懂了,求大神解释一下,或者用类来代替一下也好

Snake() :next(NULL), before(NULL)
Snake构造函数,设定next,before为NULL

结构体和类根本上区别不大,区别只是结构体默认的是public权限,类默认是pravite.
简单注释了一下,仅供参考

 struct Snake
{
Snake() :next(NULL), before(NULL)   // 默认构造函数,初始化参数列表使得next=NULL.before=NULL
{
pt.x = 0; pt.y = 0;     // 初始化坐标为(0,0)
}
Snake(const POINT &npt, Snake *, Snake *);  // 另外一种构造函数,参数为一个坐标的const引用和两个结构体指针
POINT pt;
Snake * next, *before;
} snake; //定义蛇头

这个类和结构没什么区别的。改成class CSnake也没有什么多少不同的。
具体解释,得看看贪吃蛇的说明,还有cpp中的实现
这里就提供了两个构造函数,蛇这个结构是个双向列表,可以向前或向后查找。