类里面的静态变量有点象 namespace 里面的全局变量,实际上也确实是个通过类名访问的全局变量,与类的具体对象无关。
所以下面的语句:
TSnakeBuf::TWall TSnakeBuf::Wall0[]={{-1}};
类的静态变量在类的外面定义,这有点象 C 语言的 .h 文件声明一个 extern, 在 .c/.cpp 里面定义一样,在 .c/.cpp 里面是真的。
所以这句实际上是变量的定义,C++ 在定义变量时允许赋初值,允许在定义变量时把一个集合赋值给这个变量。
Wall0 实际上是一个全局变量,这个全局变量只能通过 TSnakeBuf 这个类名来访问,
这样的全局变量在类的定义里面用 static 来表示,但实际上它不属于类的成员,sizeof(TSnakeBuf) 得到的类的大小也不包括它。
但是除了在定义变量时之外,C++ 没有把一个集合赋值给一个变量的语法。
所以 TSnakeBuf::TWall.Wall0[]={{-1}}; 是错误的。
--------------------next---------------------
阅读(1189) | 评论(0) | 转发(0) |