C/C++中的const ,static

一、const

  在C++中:

  1、常对象:创建对象时添加const关键字,这个对象就不可以再修改,就有了常属性,就意味着整个对象所有变量不能更改

  2、常对象不能调用普通函数,调用成员函数就相当于把对象的this指针给了他,就有被修改的风险

  3、常对象只能调用常函数(函数体前加关键字叫常函数),普通对象也能调用常函数,常函数就相当于对this指针添加了const属性

  4、常函数与普通函数可以构成重载,不会冲突

  5、如果有成员确实需要修改,他又被const修饰,可以对成员添加一个关键字mutable,这样即使是常对象调用了常函数依然可以修改成员

  C:

    const :常量,为变量保存添加一种保护,保护变量不能被显示修改,提高程序的安全性,当程序没必要修改参数值时,应该加const属性;
    const 可以定义常量,const修改初始化过的全局变量就是常量;

二、static

  C++:静态成员与静态成员函数

    1、类成员被static修饰,就会存储在bss段(此段是由编译器存放的而且大小是固定的),在程序中动态的创建对象时它的静态成员就无法创建,所有的类对象就共享一个静态成员

    2、静态成员只能在类中声明不能在类中定义(必须在类外定义)  类型  类名::静态成员名

    3、静态成员就是声明在类中的全局变量,在任何位置都可以使用  类名::静态成员名 进行访问

    4、静态成员函数:类中的成员函数被static修饰后就变成静态成员函数,所有成员共享一份静态成员函数

    5、静态成员函数不会传递this指针,不通过对象也能调用静态成员函数 类名::静态成员函数(参数)

  C:

    static 
      修饰全局变量时,作用域会从整个程序变为他所在的.c文件内;
      1、静态局部,块:
        存储位置会由栈改为静态段;生命周期会改为从定义开始到程序结束;但是使用范围不变;默认值为0;只能初始化一次;

    静态函数:
      static int func(int num);
      static会把外部函数变为内存函数,只能在他所在的.c文件内;

      static修饰全局变量和函数的好处,可以防治与其他函数,变量重名冲突

原文地址:https://www.cnblogs.com/gumpzlc/p/9557533.html