Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2350518
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:01:29

类里面的静态变量有点象 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) |
给主人留下些什么吧!~~