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



  • 相关阅读:
    JavaEye推荐:软件开发的葵花宝典 zt
    杨建:网站加速系统架构篇
    杨建:网站加速Cache为王篇
    整理:不用ACE你不知道ACE有多烂,给饱受ACE折磨的弟兄们散分了。
    jQuery对select操作 dodo
    easyui事件和方法的调用 dodo
    .Net 下利用ICSharpCode.SharpZipLib.dll实现文件压缩、解压缩 dodo
    使用Jquery EasyUi常见问题解决方案 dodo
    如何切分用户故事 dodo
    什么是产品Backlog,什么是Sprint Backlog? dodo
  • 原文地址:https://www.cnblogs.com/james1207/p/3303890.html
Copyright © 2011-2022 走看看