static&const关键字总结

static关键字总结

static&const思维导图
* static修饰局部变量

  • 函数内的static变量的作用范围在该函数内,该变量只在内存中初始化一次,下次使用时依然维持以前的值,不再进行初始化的工作。因为static变量保存在全局数据区,而不是栈区,保持到下一次使用时依然有效。由于其保存在全局数据区,所以它的有效范围在局部函数内,但是生命周期却伴随着整个进程的生
    命周期的结束。

    • static修饰全局变量
  • 静态全局变量表明这个变量是该文件级别的,对于其他文件是不可见的,在其他文件可以定义同名变量,并且不能用extern声明为外部变量。

    • static修饰函数

    1) 其他文件中可以定义相同名字的函数,不会发生冲突。

    2) 静态函数不能被其他文件所用。是本文件级别的。

    • static修饰成员变量
  • 对于多个实例化的对象,共享该静态成员变量,所有的对象都可以访问到这个成员。

  • 静态数据成员的值是可以更新的,更新一次,所以对象都可以共享,效率比较高。

    • static修饰成员函数

    1)出现在类体外的函数定义不能指定关键字static

    2)静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;

    3)非静态成员函数可以任意地访问静态成员函数和静态数据成员;

    4)静态成员函数不能访问非静态成员函数和非静态数据成员;

    静态方法加载的时候,对象还没有成立,同时静态方法也不能有this指针。

    5)由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;

  • tips:

    • 静态成员是属于类的,随着类的加载而加载的,是先于对象成立的。
    • 生命周期也比对象要长一些。

const关键字总结

  • const修饰变量 表示“只读” 在定义这个变量的时候要初始化,之后没有机会改变这个值了

  • const修饰指针,代表指针本身不能改变,地址不能变

  • const修饰形参,代表这是一个输入型参数,在函数内部是不可以被改变的

  • const修饰类成员函数,代表这个函数是一个常函数,不会更改成员变量的值,此时的const实际上修饰的是this指针,这块空间的内容是不可以更改 的。

  • 某些时候用来修饰类成员的返回值类型,使得其返回值不为”左值”

const的作用

  • 为给读你代码的人传达非常有用的信息,声明一个参数为常量是为了告诉用户这个参数的应用目的

  • 通过给优化器一些附加信息,使关键字const也许能产生更紧凑的代码

  • 合理使用关键字const可以使编译器很自然的保护那些不希望被修改的参数,防止无意的代码修改,可以减少bug的出现

猜你喜欢

转载自blog.csdn.net/qq_40477151/article/details/80162175