静态变量&&static的用法和作用

静态变量
  1. 静态变量什么时候初始化?

    • 在主程序之前,编译器已为其分配好内存;
    • 静态全局变量:在程序刚开始运行时就完成初始化
    • 静态局部变量:在c++中,在执行相关代码时才会进行初始化(只有一次);
      • 这是因为:c++引入对象后,要进行初始化必须执行相应的构造函数和析构函数,所以,c++标准定为全局和静态对象是由首次用到时才会进行构造,并通过atexit()来管理,所以c++是可以使用变量对静态局部变量进行初始化的。
  2. 静态成员与普通成员的区别

    生命周期共享方式定义位置初始化位置默认实参
    静态成员变量从类加载到类被卸载,一直存在全类共享静态全局区类外初始化可以使用静态成员变量作为默认实参
    普通成员变量在类创建对象后才存在,对象结束,它的声明周期结束每个对象单独享用类内初始化
static的用法和作用
  1. 隐藏
    • 同时编译多个文件时,未加static的全局变量和函数都具有全局可见性;
  2. 保持变量内容的持久
    • 在程序刚开始运行时就完成初始化;
  3. 默认初始化为0;
  4. 类成员声明static
    • 1.函数体static全局变量作用范围为该函数体,该变量的内存只被分配一次,所以其值在下次调用时仍维持上次的值;
    • 2.模块内的static全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问;
    • 3.在模块内的static函数只可被这这个模块内的其他函数调用,这个函数的适用范围被限制在声明它的模块内;
    • 4.中的static成员变量属于整个类所有,对垒的所有对象只有一份拷贝;
    • 5.中的static成员函数属于整个类所有,这个函数不接受this指针(this指针是指向本对象的指针),因此只能访问类的static成员变量;
      1. static类对象必须在类外初始化;
      1. static成员函数不能被virtual修饰。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值