zoukankan      html  css  js  c++  java
  • const限定符的作用

    const限定符的作用:                                    

    1、定义const常量:const可以将一个对象变成一个常量,不可被修改,所以定义的 时候必须进行初始化,例如:
                   const int bufsize = 512;
    2、可以修饰函数的参数、返回值、甚至函数的定义体。被const修改时的东西受到强制保护,可以预防意外的变动,提高程序的健壮性。
    • 一般全局作用域中,定义了非const变量,它可以在整个程序中访问;
    //file_1.cc
    int counter;           //定义的是非const变量

    extern int counter;     //使用file_1.cc文件中的counter变量
    ++counter;
    • 如果全局作用域中声明了const变量,则它是定义该对象的文件的局部变量,只存在于那个文件,不能被其他文件访问;
    • 将const变量指定为extern,就可以在整个程序中访问const对象了
    //file_1.cc
    extern const int counter = fcn();           //定义的是const变量,并且指定为extern,这里counter就可以作为全局变量使用了

    extern const int counter;     //使用file_1.cc文件中的counter变量
    ++counter;


    ================================================================================================
    const与#define的不同:                                    

    C++语言可以使用const定义常量,也可以使用#define定义常量,但是前者比后者有更多的优点:
         1、  const常量有数据类型,但是宏常量却没有数据类型,所以编译器可以对前者进行类型安全检查而对后者只能进行字符替换;
          2、有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

    ================================================================================================

    在C++中,由const修饰的成员函数的函数体内部,是不能够对成员变量进行修改的。 但是在某些情况下,需要在const函数中改变成员变量。这就需要把成员变量设置成mutable类型,例如:
    class C
    {
        public:
            C(int i):m_Count(i){}
            int incr() const          //这里的成员函数incr被指定为const型,所以函数中的变量不能被修改,即m_Count变量不能改变,要是m_Count能够改变,就
                                            需要将m_Count变成mutable型

            {
                return ++m_Count;
            }
        private:
            mutable int m_Count;      //主要这里
    }



  • 相关阅读:
    CVTE前端一面
    转载几篇看过的几篇使用技术博文
    Vue自定义指令
    node项目初始化的一些配置
    vue+element 实现在表格内插入其他组件,每行数据独立存储
    jquery如何实现当页面下拉到一定位置时,右下角出现回到顶部图标
    css实现垂直居中的方法整理
    css3兼容性检测工具
    css变换与动画详解
    手机访问电脑端网站偏问题解决
  • 原文地址:https://www.cnblogs.com/james1207/p/3303890.html
Copyright © 2011-2022 走看看