• const,static,volatile关键字的作用


    const关键字:
      1.欲阻止一个变量被改变,可使用const,在定义该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). 多线程应用中被几个任务共享的变量 

  • 相关阅读:
    Supermap/Cesium 开发心得----获取三维视角的四至范围
    Supermap/Cesium 开发心得----定位
    GIS面试小知识点
    Oracle数据库小知识点整理
    利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
    Geoserver设置style
    图片按宽高比1:1响应,窗口大小如何变化,图片宽高始终相等
    简单树
    递归渲染树
    div等高布局
  • 原文地址:https://www.cnblogs.com/nanqiang/p/9897891.html
Copyright © 2020-2023  润新知