c/c++的const和static区别
C语言中的const和static用来修饰变量或者函数,用const修饰表示不可改变,用static修饰表示变量或者函数是静态的,作用域控制在函数内。
const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。
static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。
在C++中,static静态成员变量不能在类的内部初始化。在类的内部只是声明,定义必须在类定义体的外部,通常在类的实现文件中初始化,如:double Account::Rate=2.25;static关键字只能用于类定义体内部的声明中,定义时不能标示为static
在C++中,const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。
const数据成员 只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类的声明中初始化const数据成员,因为类的对象没被创建时,编译器不知道const数据成员的值是什么。
const数据成员的初始化只能在类的构造函数的初始化列表中进行。要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static cosnt。
转载:https://www.cnblogs.com/phpzhou/p/6390869.html
参考:https://www.cnblogs.com/zhangjiansheng/p/6527708.html
最新文章
- MarkdownPad2 Pro v2.4.2.29969 专业中文破解版完美支持table表格语法
- springMVC 相对于 Structs 的优势
- Castle 集锦
- C#用串口接收事件接不全数据的处理
- Systemd 入门教程:实战篇
- 浅谈iOS的Autolayout
- sublime安装插件
- JFreeChart多坐标轴曲线图
- gcc/g++ 如何支持c11 / c++11标准编译
- Windbg调试命令详解(1)
- Milk Pails
- 新建play项目eclipsify后导入eclipse后无法debug调试
- 基于Mysql数据库的SSM分页查询
- Unable to find utility "instruments", not a developer tool or in PATH
- LINUX常用命令 --- 权限篇
- Class create, device create, device create file【转】
- 解析神奇的 Object.defineProperty
- python获取公网ip,本地ip及所在国家城市等相关信息收藏
- DS树+图综合练习--二叉树之最大路径
- Java XML SAX 解析注意
热门文章
- how to run faster
- Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等
- VisualStudio2017中新建的ASP.NET Core项目中的各个文件的含义
- 719D(树形dp)
- IT兄弟连 Java语法教程 Java语言的跨平台特性
- 利用正则取出Stirng中“”引号内的内容
- 基于ZFAKA二次开发,添加PayJS支付渠道
- vue 开发笔记
- sublime text 3 添加 javascript 代码片段 ( snippet )
- 定位之float 同一父元素的float相互影响,float是margin盒子在父元素的padding盒子内