静态数据成员:
对于非const的类静态成员,只能在类的实现文件中初始化,如下示例代码。
Human.h
class Human {
public:
......
static int getCount();
private:
string name = "Unknown";
int age = 28;
......
// 类的静态成员
static int count;
};
Human.cpp
#include "Human.h"
// 初始化类的静态成员
int Human::count = 0;
......
// 类的普通成员函数,可以直接访问静态成员(可读可写)
int Human::getCount() {
return count;
}
const类静态成员,可以在类内设置初始值,也可以在类的实现文件中设置初始值。(但是不要同时在这两个地方初始化,只能初始化1次)。
注意:
类中所有的成员函数,都可以访问静态数据成员。
类不能直接访问普通的静态数据成员(Human::count 非法)。
类的静态成员函数:
类的静态方法:
- 可以直接通过类来访问【更常用】,也可以通过对象(实例)来访问。
- 在类的静态方法中,不能访问普通数据成员和普通成员函数(对象的数据成员和成员函数)
注意:
对象可以直接访问静态成员函数
类可以直接访问静态成员函数(Human::getCount())
在类的静态成员函数(类的静态方法)内部,不能直接访问this指针和对象的数据成员!因为this指针是属于实例对象。
在类的静态成员函数(类的静态方法)内部,只能访问类的数据成员(即静态数据成员)。