C++-const-static

本文探讨了C++中const和static的关键特性,包括const作为常量的类型安全性、内存节省和const常量的单份拷贝,以及static修饰的静态数据成员的共享性质、存储位置和生命周期特点。
摘要由CSDN通过智能技术生成

const

const是c++中的常类型修饰符,常类型的变量是不可修改的。
const常量与宏define的区别:define是没有定义数据类型,const是有数据类型的。编译器在对const进行类型安全检查的时候可以发现不匹配的数据类型传值。而define只是进行字符的替换,没有进行安全检查,所以define在进行字符替换的时候或许会产生意料之外的错误。
且const可以节省内存空间,const只是给出了对应的内存地址,而define是给出立即数。const定义的常量在程序运行过程中只有一份拷贝,而define定义的常量在内存中有若干的拷贝。

static

如果一个数据成员被static修饰,那么则称这种数据成员为静态数据成员,与一般的数据成员不同,无论建立多少个类对象,都只有一个静态数据成员的拷贝。从而实现同一个类对不同对象间的数据共享。
局部静态变量
全局变量与静态变量的存储是放在一起的,初始化的全局变量与静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束释放。那么静态数据是在全局数据区域分配的空间,它的存在意义是随着第一次函数的调用而初始化,但是却不随着函数的调用结束而销毁。
那么局部静态变量和全局变量区别在于使用全局变量,变量就不属于函数本身,且不再收到函数的控制了,给维护带来不便。
所以局部静态变量的特点为:
(1.)局部静态变量是在全局数据区分配内存的(局部变量是在栈区分配内存)。
(2.)局部静态变量在程序执行到该对象时该对象被首次初始化,以后函数再调用就不在进行初始化(局部变量每次函数调用结束后就被销毁,再次使用需要再次初始化)。
(3.)局部静态变量一般在声明处初始化,且若没有显式初始化,则程序会自动初始化为0(局部变量不会自动初始化为0)。
(4.)局部静态变量一直存驻留在全局数据区,直到程序运行结束。(局部静态变量要注意局部二字,它虽然在全局数据区分配空间,但是在函数体外是不可见的,局部静态变量只能在函数体内使用)。

全局静态变量
全局静态变量定义在函数外。它的使用和全局变量没有太大区别,但是静态函数只能访问静态变量而不能访问非静态变量。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值