Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180298
  • 博文数量: 37
  • 博客积分: 1367
  • 博客等级: 中尉
  • 技术积分: 465
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-06 17:41
文章分类

全部博文(37)

文章存档

2015年(1)

2012年(17)

2011年(10)

2010年(1)

2009年(8)

我的朋友

分类: C/C++

2012-03-13 15:27:56

静态数据成员的初始化。
1.一般地,静态数据成员在该类定义之外被初始化
2.作为特例,有序型的const静态数据成员可以在类体中用一常量值初始化。何为有序型?有序类型,又称“整值类型”,指char   short   int   long   和它们的unsigned版本,不含float和double。
如:
class A
{
private:
static const int i = 10; //ok
static int j = 10; //错误.
};

不过,在类体内初始化一个const静态数据成员时,该成员必须仍然要被定义在类定义之外。但是因为这个静态数据成员的初始值是在类体中指定的所以在类定义之外的定义不能指定初始值 。

静态数据成员同非静态数据成员的对比
1. 静态数据成员的类型可以是其所属类而非static数据成员只能被声明为该类的对象
的指针或引用
2. 静态数据成员可以被作为类成员函数的缺省实参而非static成员不能.例如
extern int var;
class Foo {
private:
 int var;
  static int stcvar;
public:
 // 错误: 被解析为非 static  的 Foo::var
 // 没有相关的类对象
  int mem1( int = var );
 
 // ok: 解析为 static  的 Foo::stcvar
 // 无需相关的类对象
  int mem2( int = stcvar );
 
  // ok: int var  的全局实例
  int mem3( int = ::var );
};

静态成员函数
1.静态成员函数不能声明为const、volatile
2.静态成员函数只能访问静态成员变量,所以,静态成员函数中不能含有非静态成员变量。

----摘自《C++ Primer》
阅读(1755) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~