静态成员变量

1.静态成员变量是属于整个类的全局变量,它不单属于某个对象,普通成员变量是属于类中对象的变量。

它不能被所有对象共享

2.静态成员变量必须在全局进行定义,而成员变量由于是属于该类某个对象的,而不是属于整个类的,因此不用在全

局进行定义。

3.在使用静态成员变量时,可以不限定为某个具体的对象,只与类名连用即可

如 A::total 而不用 A a; a.total;

4.静态成员在没有对象之前就存在


/*

#include <iostream>
using namespace std;
class A
{
   public:
   A(int num):it(num){total++;} //构造类A并实例化该类的私有成员变量it和静态成员变量total,每构造一次,执行total加1操作
   virtual ~A(){total--;}     //每析构一次,执行total减1操作
   virtual int get(){return it;}  //定义虚函数get,该函数返回私有变量it的值
   virtual void set(int age){it=age;}//定义虚函数set,该函数设置私有变量it的值
   static int total; //声明一个整型静态成员变量total
   private:
   int it;   //声明私有成员it
};
int A::total=0; //定义该静态成员变量并且将其初始化为0
int main()
{
   const int max=5;int i; //定义常整型max并将其值赋为5,定义变量i
   A*a[max]; //声明一个指向类A的指针数组a,并将它的元素个数设置为max
   for(i=0;i<max;i++) //从0开始,循环到max的值结束,也就是5
   a[i]=new A(i); //每循环一次开辟一个新空间,然后将地址保存在指针数组a的一个元素中
   for(i=0;i<max;i++)
   {
      cout<<"该类有"<<A::total<<"个对象。\n";    //由于静态变量是属于类而不是对象的,因此要用类来访问它
      cout<<"正在删除第"<<a[i]->get()<<"个对象。\n";
      delete a[i];   //删除指针数组指向的各个对象,同时delete会默认调用 析构函数来销毁对象
   }
   return 0;
}
*/


/*
#include <iostream>
using namespace std;
class A 
{
public:static int x;
};
int A::x=10;       //注意在定义静态成员变量x的时候也要加上类名和限定符(A::)。
int main()
{
A a, b, c;
cout<<a.x<<endl<<b.x<<endl<<c.x;
return 0;
}
*/


//(4)静态成员在没有对象之前就存在。如:
#include <iostream>
using namespace std;
class A 
{
public:
static int n;
};
int A::n=0;
void show(){cout<<A::n<<"a \n";}
int main()
{
int i;
for(i=0;i<5;i++)
{
 A::n++; //访问静态成员变量n并对其进行自加操作
     show(); //调用全局函数show,该函数输出静态成员变量n的值
}
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值