Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87970
  • 博文数量: 38
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-03 15:11
文章分类

全部博文(38)

文章存档

2011年(1)

2010年(3)

2009年(19)

2008年(15)

我的朋友

分类: C/C++

2009-02-20 01:09:27

class A{
private:
  const int a = 1;  //error: 只有静态整型常量可以在类中初始化
  static const int h = 1;         //ok
  static const double h1 = 1.0;   //error: 只有静态整型常量才能在类中初始化
  const int b,c;
  int d;
  int &e=b;  //error:只有静态变量才能在类中初始化。但引用必须定义时初始化,怎么办呢?在初始化列表中初始化
  int &f;
  static int g;
public:
  A():c(1),f(d){  //ok:常量,引用只能在构造函数的初始化列表中初始化
    b=1;//error:常量只能在构造函数的初始化列表中初始化
    d=2;//ok:变量可以在这儿初始化,没问题
    g=1;//error:静态变量在构造函数中不能初始化,不知道为什么?
  }
 
};
 
int A::a; //加上这一句后,上边的g = 1;这一行就没问题了。静态变量必须在类定义体的外部定义一次。
          //注意,这儿不能写成static int A::a; static关键字要去掉。
阅读(3615) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-03-27 17:03:28

只能在定义时进行初始化,不然,每创建一个对象,就对该静态变量初始化一次,而静态变量是不属于任何对象的,所以,只能初始化一次