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;      //主要这里
    }



  • 相关阅读:
    (资源搜索类)几个好用的磁力搜索网站
    百度网盘不限速,直接获取直链
    百度网盘偷偷更新,免费也终于不限速了
    ES6新特性之箭头函数与function的区别
    [亲测可用]BCompare文件比较对比工具4.3.4绿色版
    Autofac 动态获取对象静态类获取对象
    Linq to SQL 语法整理(子查询 & in操作 & join )
    小程序监听页面滚动开始和滚动结束
    C# Task.Run 和 Task.Factory.StartNew 区别
    Entity Framework Core必须牢记的三条引用三条命令
  • 原文地址:https://www.cnblogs.com/james1207/p/3303890.html
Copyright © 2011-2022 走看看