静态数据成员的初始化格式为:
数据类型 类名::静态数据成员名 = 值;
注意:
- 基类定义的静态成员, 将被所有的派生类共享。
- 静态数据成员在程序中只有一份拷贝, 由该类型的所有对象共享访问。
- 静态数据成员和普通数据成员一样遵从访问控制原则。
静态成员函数:
static 返回类型 函数名(参数列表)
{
函数体
}
注意:
- 出现在类体外的函数定义不能指定关键字static 。
- 静态成员函数只能访问静态数据成员和静态成员函数。
- 静态成员函数也遵从访问控制原则。
#include<iostream>
using namespace std;
class Base
{
public:
//定义一个静态成员
static int i;
void print()
{
cout << "i: " << i << endl;
}
//静态成员函数只能在类的内部定义
//只能使用静态成员函数和静态数据成员
static void Add1()
{
i++;
}
};
//对静态成员显式地进行初始化,让编译器分配内存空间
int Base::i = 0;
class Derived : public Base
{
public:
void print()
{
cout << "i: " << i << endl;
}
static void Add2()
{
i += 2;
}
};
int main()
{
//在使用时,所有的基类和派生类对象使用的是同一个静态成员
Base b1;
b1.i = 2;
b1.print();
Derived d1;
d1.print();
d1.i = 5;
d1.print();
b1.print();
b1.Add1();
b1.print();
d1.Add2();
b1.print();
d1.print();
return 0;
}