- 当在类外部定义静态成员时,不能重复使用static关键字
- 静态成员函数不包含this指针(无论是显示还是隐式使用)
- 静态成员可以通过类对象进行访问,也可以通过类进行访问
- 静态成员不是由构造函数初始化的,一般来说不能在类的内部初始化静态成员
- 静态数据成员定义在任何函数之外,且只能被定义一次
- 在定义静态数据成员时,通过类限定符可以访问该静态数据成员,无论该静态数据成员是public、protected还是private,但是只能在定义时这样做
- 静态数据成员的类型可以是它所属于的类类型,而非静态数据成员只能声明它所属类的指针或引用
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
#include<iostream>
usingnamespace std;
classClassTest
{
public:
staticint getValue();
private:
staticint value /*= 1*/;
};
#endif// MAIN_H_INCLUDED
.cpp文件
#include"main.h"
/**< 对于静态数据成员一般不能在类内进行初始化 */
/**< 若要在类内进行初始化,则要求静态成员必须是常量表达式 */
intClassTest::value =2;//在定义时,尽管value是private类型,依然可以通过类限定符进行访问
intClassTest::getValue()
{
return value;
}
int main()
{
ClassTest classTest;
cout << classTest.getValue()<< endl;
/**< 可以使用类名直接访问静态成员,在类外不能访问private成员 */
//cout << ClassTest::value << endl;/**< 错误,因为value是private */
cout <<ClassTest::getValue()<< endl;
return0;
}