C++类静态成员包含静态成员方法与静态数据成员,下面主要介绍静态数据成员的初始化
当数据成员被声明为
static
时,只会为类的所有对象保留一个数据副本。静态数据成员不是给定的类类型的对象的一部分。 因此,静态数据成员的声明不被视为一个定义。 在类范围中声明数据成员,但在文件范围内执行定义。 这些静态类成员具有外部链接,示例如下:
class Base
{
private:
// 在类内部声明静态数据成员
static int m_count;
static Base m_base;
public:
Base(){}
};
// 在类外部定义静态数据成员,分配内存
Base Base::m_base;
int Base::m_count = 10;
注意:在类外部定义静态数据成员时,不能使用
static
关键字,不然会报错。
如果要在类内部初始化类静态成员,可以使用下面两种方法
class Base
{
private:
// 在类内部初始化static const成员
static const int MAX_NUM = 20;
public:
Base(){}
};