C++ 中 static 和 const 关键字

1. static

static 作⽤:控制变量的存储⽅式和可⻅性。

  1. 修饰局部变量:用static修饰过的局部变量,该变量会从栈区放到静态数据区,生命周期延长到整个程序执行结束,注意:其作用域没有发生变化。
  2. 修饰全局变量:改变了作用域范围,范围从整个工程变成了当前文件可见。
  3. 修饰函数:效果和修饰全局变量一样。
  4. 修饰类:static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因⽽只能访问类的 static 成员变量;static 成员变量属于整个类所拥有,对类的所有对象只有⼀份拷⻉;
    1. 静态⾮常量数据成员,其只能在类外定义和初始化,在类内仅仅只是声明。

2. const

const作用:不变

  1. 修饰基本数据类型:const可以放在基本数据类型前,也可以在其后,不影响结果,最终的效果都是让这些值无法被更改。
  2. 修饰指针变量和引⽤变量:如果 const 位于⼩星星的左侧,则 const 就是⽤来修饰指针所指向的变量,即指针指向为常量(指针常量)(底层const);如果 const 位于⼩星星的右侧,则 const 就是修饰指本身,即指针本身是常量(常量指针)(顶层const)。
  3. 修饰函数返回值:按照第1条和第二条规则进行修饰,const用在函数内部也是一样。
  4. 在类中的用法const成员变量,只在某个对象生命周期是常量,对于整个类来说,是可以变的,对于对象来说是不可变的。const 成员的初始化只能在类的构造函数中进⾏。
    const 成员函数,const 成员函数的主要⽬的是防⽌成员函数修改对象的内容。要注意,const 关键字和 static 关键字对于成员函数来说是不能同时使⽤的,因为 static 关键字修饰静态成员函数不含有 this 指针,即不能实例化,const 成员函数⼜必须具体到某⼀个函数。
  5. 修饰类对象:常量对象只能调⽤常量函数,别的成员函数都不能调⽤。
    1. const 成员函数中如果实在想修改某个变量,可以使⽤ mutable 进⾏修饰。成员变量中如果想建⽴在整个类 中都恒定的常量,应该⽤类中的枚举常量来实现或者 static const。

         

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值