静态数据成员的初始化。
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.静态成员函数只能访问静态成员变量,所以,静态成员函数中不能含有非静态成员变量。
阅读(1098) | 评论(0) | 转发(0) |