• C++中const关键字用法


    为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下:

      常变量:  const 类型说明符 变量名
      常引用:  const 类型说明符 &引用名
      常对象:  类名 const 对象名
      常成员函数:  类名::fun(形参) const
      常数组:  类型说明符 const 数组名[大小]    
      常指针:  const 类型说明符* 指针名 ,类型说明符* const 指针名

    首先提示的是:在常变量(const 类型说明符 变量名)、常引用(const 类型说明符 &引用名)、常对象(类名 const 对象名)、 常数组(类型说明符 const 数组名[大小]), const” 与 “类型说明符”或“类名”(其实类名是一种自定义的类型说明符) 的位置可以互换。如:
         const int a=5; 与 int const a=5; 等同
         类名 const 对象名 与 const 类名 对象名 等同

    用法1:常量
        取代了C中的宏定义,声明时必须进行初始化(!c++类中则不然)。const限制了常量的使用方式,并没有描述常量应该如何分配。如果编译器知道了某const的所有使用,它甚至可以不为该const分配空间。最简单的常见情况就是常量的值在编译时已知,而且不需要分配存储。―《C++ Program Language》
        用const声明的变量虽然增加了分配空间,但是可以保证类型安全。
        C标准中,const定义的常量是全局的,C++中视声明位置而定。

    用法2:指针和常量
        使用指针时涉及到两个对象:该指针本身和被它所指的对象。将一个指针的声明用const“预先固定”将使那个对象而不是使这个指针成为常量。要将指针本身而不是被指对象声明为常量,必须使用声明运算符*const。
        所以出现在 * 之前的const是作为基础类型的一部分:
    char *const cp; //到char的const指针
    char const *pc1; //到const char的指针
    const char *pc2; //到const char的指针(后两个声明是等同的)
        从右向左读的记忆方式:
    cp is a const pointer to char. 故pc不能指向别的字符串,但可以修改其指向的字符串的内容
    pc2 is a pointer to const char. 故*pc2的内容不可以改变,但pc2可以指向别的字符串
    且注意:允许把非 const 对象的地址赋给指向 const 对象的指针,不允许把一个 const 对象的地址赋给一个普通的、非 const 对象的指针。

    用法3:const修饰函数传入参数
        将函数传入参数声明为const,以指明使用这种参数仅仅是为了效率的原因,而不是想让调用函数能够修改对象的值。同理,将指针参数声明为const,函数将不修改由这个参数所指的对象。
        通常修饰指针参数和引用参数:
    void Fun( const A *in); //修饰指针型传入参数
    void Fun(const A &in); //修饰引用型传入参数

    用法4:修饰函数返回值
        可以阻止用户修改返回值。返回值也要相应的付给一个常量或常指针。

    用法5:const修饰成员函数(c++特性)
    const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数;
    const对象的成员是不能修改的,而通过指针维护的对象确实可以修改的;
    const成员函数不可以修改对象的数据,不管对象是否具有const性质。编译时以是否修改成员数据为依据进行检查。
  • 相关阅读:
    2015-05-27 用正则把oracle时间转化到mysql时间
    linux版idea14界面美观和windows,mac基本一致
    ubuntu 下自定义快捷键,,用着舒服
    ubuntu 方便好用的截图软件
    Integer 包装器类 大小比较
    win7、ubuntu双系统,遇到分区不可用问题,和卸载ubuntu后win7开不了机
    巧妙小思想
    读取16进制文件和校验图片格式的问题。 文件名后缀
    旧电脑变废为宝!
    Win10打开Autodesk软件时提示“管理员已阻止你运行此应用”
  • 原文地址:https://www.cnblogs.com/songdanzju/p/7422352.html
Copyright © 2020-2023  润新知