C++进阶—>static关键字

0 前言

为什么引入static关键字?

    类都有自己的成员函数和成员变量,每个类对象都具有类中所定义,各自的成员函数和成员变量,为了让不同的对象能共同访问同个类成员变量(或函数),引入static关键字,使得具有static关键字的成员变量(或函数),各个对象共同拥有。

1静态成员变量

1)定义静态成员变量

Ø  关键字 static 可以用于说明一个类的成员,

             静态成员提供了一个同类对象的共享机制

Ø   把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员

Ø   静态成员局部于类,它不是对象成员

2)使用静态成员变量

// 使用公有静态数据成员,当然static数据成员不管是公有、私有、受保护的都能够被各个对象共享。

#include<iostream.h>

class counter

{ public :

     counter (int a) { mem = a; }

     int mem;                //公有数据成员

     static  int  Smem ;   //公有静态数据成员

} ;

int counter :: Smem = 1 ;      //初始值为1

void main()

{   counter c(5);

   int i ;

   for( i = 0 ; i < 5 ; i ++ )

     { counter::Smem += i ;

        cout << counter::Smem << '\t' ;  //访问静态成员变量方法2

     }

   cout<<endl;

   cout<<"c.Smem = "<<c.Smem<<endl; //访问静态成员变量方法1

   cout<<"c.mem = "<<c.mem<<endl;

}

2静态成员函数

1)概念

Ø  静态成员函数,冠以关键字static

Ø   静态成员函数提供不依赖于类数据结构的共同操作,它没有this指针

Ø   在类外调用静态成员函数用“类名 :: ”作限定词,或通过对象调用

2)举例

class AB
{
public:
int a ;
int b ;
static int c;
static void PrintC()
{
cout<<c<<endl;
}
static void PrintA()
{
// cout<<a<<endl;
}
};

int AB::c=10;

void main()
{
AB aaa;
aaa.c=111;
aaa.PrintC();


system("pause");
return;
}

3)注意事项:

静态成员函数中,只能使用静态成员变量,不能使用普通变量或普通函数。

因为静态成员函数被各个对象共享,若通过其去使用普通变量,编译器无法识别该变量属于哪个对象。(在编程是若静态成员函数中存在非静态成员会报错)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值