静态数据成员在类声明中声明,在包含类方法的文件中初始化.
初始化时使用作用域操作符来指出静态成员所属的类.
但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!!
程序举例:
MyString.h
#ifndef MyString_H
#define MyString_H
class MyString
{
public:
MyString(void);
~MyString(void);
static char* name ;
};
#endif /*MyString_H*/
MyString.cpp
#include "MyString.h"
MyString::MyString(void)
{
}
MyString::~MyString(void)
{
}
char *MyString::name = 0;
Main.cpp
#include "MyString.h"
#include<iostream>
#include<cstring>
using namespace std;
int main(int argc, char *argv[]) {
char *buffer = new char[20];
char *tmp = "HelloWorld";
strncpy(buffer, tmp, strlen(tmp) + 1);
MyString::name = buffer;
cout << MyString::name << endl;
delete buffer;
return 0;
}
总之,类的静态成员属于整个类,不属于类的实例。其初始化,必须在类的实现文件即类声明的.h文件对应的.cpp中初始化。
此外,类的静态常量可以在类的声明文件,即.h文件中初始化。