简述
在结构化程序设计中,内存中数据的共享是通过参数, 全局变量实现的;
在面向对象程序设计中函数与数据成员封装在一起, 数据共享通过类内部数据成员之间的相互访问, 外部对象则通过静态成员(即static成员)来共享数据;
接下来通过面向对象叙述static特性
C++中的static
静态成员
使用关键字static修饰的函数/数据成员, 静态成员属于整个类, 由同一个类的所有对象所拥有,共享; 一般通过类名进行访问: 类名::标识符 ;
注: 在类中定义静态数据成员, 仅仅是对静态数据成员进行引用性声明, 必须在类外使用类名限定定义性声明(即真正的声明),这时才能进行初始化
#include<iostream>
using namespace std;
class A{
public:
static int count;
A(){
++count;
cout<<"构造函数"<<endl;
}
A(A const& a){
++count;
cout<<"复制构造函数"<<endl;
}
~A(){
cout<<"析构函数"<<endl;
count--;
}
static int show(){
return count; //静态成员函数可以直接访问该类的静态数据成员,访问费静态数据成员只能通过对象名
}
};
int A::count=0;
void f(){
//顺带测试一下静态生存期