static类成员

在学习C语言时就已经接触到了static,中文意思为静态的,它主要用在三个地方

1.定义全局静态变量,使得全局变量改变其作用域:其他文件不可访问该全局变量,编程者不用担心其他人用了什么全局变量


2.定义局部静态变量,局部变量本来存放在栈中的,在离开作用域后就被销毁,但在局部变量之前加上关键字static
它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用

因为它总是保留着上一次调用函数后的值,因此常用来做计数器


3.定义静态函数, 静态函数不能被其他文件所用。


这些被称为C++面向过程的static

不同于C语言,C++还有面向对象的层面:

static类成员

1.static数据成员:static数据成员孤立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联

static数据成员的定义

class student

{public:void func();


private: static int a;声明时指明为static


};
int student::a=0;必须在类定义体的外部定义,并在定义时初始化,且不能标示为static


一般而言,类的static成员,像普通数据成员一样,不能再类的定义体中初始化。但有个例外

只要初始化式是一个常量表达式,整型const static数据成员就可以在类的定义体中进行初始化

(新的C++标准已支持const static数据成员在类的定义体是进行定义并初始化)

class student
{ public:void func();


private: const static int a=0;定义同时初始化


};
const int student::a; //可加可不加
2.static成员函数
static成员是类的组成部分也不是任何对象的组成部分,因此,static成员函数没有this指针,static成员函数也不能被声明为const和虚函数
3.使用类的static成员
可以通过作用域操作符从类直接调用static成员,因为static成员不从属于的的任何对象
或者通过对象、引用或指向该类类型对象的指针间接引用
student::a;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值