const,static,volatile关键字的作用
2024-08-26 04:41:38
const关键字:
1.欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了;
2.对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
3.在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值;
4.对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量;
5.对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。
2.对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
3.在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值;
4.对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量;
5.对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。
static关键字:
1.static局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。再次调用该函数可以再次使用。
2.static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
3.static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;
(1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰
(2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)
在C++中static关键字除了具有C中的作用还有在类中的使用
在类中,static可以用来修饰静态数据成员和静态成员方法
静态数据成员
(1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。
(2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。
(3)静态数据成员可以被初始化,但是只能在类体外进行初始化,若为对静态数据成员赋初值,则编译器会自动为其初始化为0
(4)静态数据成员既可以通过对象名引用,也可以通过类名引用。
静态成员函数
(1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。
(2)非静态成员函数有this指针,而静态成员函数没有this指针。
(3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。
volatile关键字:
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
最新文章
- android之ViewPager的使用
- HTML5学习总结-09 拖放和手机触屏事件
- Libfilth(一个滤波器C库)使用
- python将json格式的数据转换成文本格式的数据或sql文件
- HDU 4856 (状态压缩DP+TSP)
- 黄聪:C#如何操作JSON数据(读取、分析)
- XCode7,打包上传的一些警告,及参考处理方法
- __cdecl、__stdcall、__fastcall、thiscall 进栈、出栈区别
- 『重构--改善既有代码的设计』读书笔记----Hide Delegate
- Android开发技巧——去掉TextView中autolink的下划线
- Silverlight闹钟
- 转: Apache SSI详解及应用
- PredictionIO Open Source Machine Learning Server
- Swift - 跑酷游戏开发(SpriteKit游戏开发)
- effective c++ 条款3 use const whereever you can
- Kinect外包团队— 2016中国VR开发者论坛第一期
- 如何让PHP程序自动执行(后台)
- lua中产生 1 - n 之间不重复随机数
- ASP.NET中异常处理的注意事项
- vmware 安装 Mac OS X 10.9 Mavericks