关于c++编程游戏中头文件的问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 11:26:53
下面的代码是我在一个人机象棋游戏的代码走法产生器类的定义
我是学c的,c++只看过点皮毛,所以很多c++程序代码看不懂希望各位尽量帮下,可能问的问题有点sb~~
#if !defined(AFX_MOVEGENERATOR_H__54A88FC2_CAFC_11D5_AEC7_5254AB2E22C7__INCLUDED_) //长长的应该是名字吧,为什么定义那么长?
#define AFX_MOVEGENERATOR_H__54A88FC2_CAFC_11D5_AEC7_5254AB2E22C7__INCLUDED_

#if _MSC_VER > 1000 //从这里到#endif那里,我看不懂,希望可以解释下
#pragma once
#endif // _MSC_VER > 1000

class CMoveGenerator
{
public:
CMoveGenerator();
virtual ~CMoveGenerator(); //这是什么意思来的?还有“~”看不懂什么意思。
static BOOL IsValidMove(BYTE position[10][9], int nFromX, int nFromY, int nToX, int nToY); //static是不是和c语言中的static一样功能?BYTE是不是一个字节?
······

AFX_MOVEGENERATOR_H 这个表示afx_movegenerator.h
__54A88FC2_CAFC_11D5_AEC7_5254AB2E22C7__INCLUDED_ 这个估计是它的详细信息之类,可以不写,但为了移植到其他程序里不冲突,便加上了

这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次

#pragma once用来防止某个头文件被多次include,#ifndef,#define,#endif用来防止某个宏被多次定义。

#pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了。
#ifndef,#define,#endif这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式

virtual ~CMoveGenerator(); 虚的析构函数,所谓虚函数是为了多态的继承,析构和CMoveGenerator();正好在这个类生命周期的两端,负责回收内存之类的收尾工作和初始化工作。

static的函数是指这个函数只能在这个文件中被调用,即使别的文件引用了此头文件,也不能调用此函数。

BYTE就是char。