目录
一、什么是静态属性?
在类型设计中,用关键字static修饰的数据成员为静态数据成员,由该类型所实例化的所有对象,共享系统为静态成员分配的一个存储空间,这个存储空间是程序执行main函数之前分配的。在实例化对象时不再为静态成员分配空间。也就是说静态成员数据不在对象空间中。
二、静态成员变量的特点与优势
1.静态成员变量特点
(1)使用静态成员变量的主要目的是信息共享。
设计一个圆类作为示例,代码如下:
#include<iostream>
using namespace std;
class Circle
{
private:
double pi;
double radius;//圆的半径
public:
Circle(double r = 0.0):pi(3.14),radius(r){}
~Circle(){}
double area()const
{
return pi * radius * radius;
}
};
int main()
{
Circle cir(12.23);
cir.area();
size_t sz = sizeof(cir);
return 0;
}
若想让圆类中所有对象都能使用这个pi值,可以将pi设计成静态数据成员:
class Circle
{
private:
static const double pi;
double radius;//圆的半径
public:
//Circle(double r = 0.0):pi(3.14),radius(r){}//error
Circle(double r =0.0):radius(r){}
~Circle(){}
double area()const
{
return pi * radius * radius;
}
};
const double Circle::pi = 3.14;
(注:大家可以发现,如果在构造函数初始化列表中定义静态数据成员会报错,这是因为静态数据成员为所有对象共有,在类内定义则每实例化一个对象都要定义一次静态成员变量 &