zoukankan      html  css  js  c++  java
  • 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修饰全局变量和函数的好处,可以防治与其他函数,变量重名冲突

  • 相关阅读:
    【BZOJ】3052: [wc2013]糖果公园
    【BZOJ】3757: 苹果树
    【BZOJ】1086: [SCOI2005]王室联邦
    【POJ】3648 Wedding
    【POJ】3678 Katu Puzzle
    【POJ】2296 Map Labeler
    【POJ】3207 Ikki's Story IV
    【HDU】1814 Peaceful Commission
    【HDU】2829 Lawrence
    【HDU】3480 Division
  • 原文地址:https://www.cnblogs.com/gumpzlc/p/9557533.html
Copyright © 2011-2022 走看看