zoukankan      html  css  js  c++  java
  • C++ 中的constkeyword

                为什么使用const?採用符号常量写出的代码更easy维护;指针经常是边读边移动,而不是边写边移动;很多函数參数是仅仅读不写的。const最常见用途是作为数组的界和switch分情况标号(也能够用枚举符取代),分类例如以下:
               常变量:  const Type 变量名 或  Type const 变量名 //两者等同, 如: const int a=5; 与 int const a=5; 等同
               常引用:  const Type &引用名
                常对象:  Type const 对象名
                常成员函数:  类名::fun(形參) const
               常数组:  Type const 数组名[大小]    
               常指针:  const Type* 指针名 ,Type* const 指针名

    首先提示的是:在常变量(const 类型说明符 变量名)、常引用(const 类型说明符 &引用名)、常对象(类名 const 对象名)、 常数组(类型说明符 const 数组名[大小]), const” 与 “类型说明符”或“类名”(事实上类名是一种自己定义的类型说明符) 的位置能够互换。

    如:

    一、Const作用

       例如以下表所看到的:


    二、Const的使用方法

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

    2.1、常量使用方法

             const Type varibale = value or Type const variable = value;  在C++中经常使用来替换#define,一个原因是在编译器处理源代码是被预处理器移走了。错误发生时非常调试;第二个原因是每使用一次都会又一次申请内存,添加代码码,而const则仅仅一份内存空间。

    2.2、使用CONST
    (1)指针本身是常量不可变
         (char*) const pContent; 
         const (char*) pContent; 

    (2)指针所指向的内容是常量不可变
         const (char) *pContent; 
         (char) const *pContent; 

    (3)两者都不可变
          const char* const pContent; 
    (4)还有当中差别方法,沿着*号划一条线:
    假设const位于*的左側,则const就是用来修饰指针所指向的变量,即指针指向为常量;
    假设const位于*的右側。const就是修饰指针本身。即指针本身是常量。

    3、函数中使用CONST

    (1)const修饰函数參数
    a.传递过来的參数在函数内不能够改变(无意义,由于Var本身就是形參)

    void function(const int Var);

    b.參数指针所指内容为常量不可变

    void function(const char* Var);

    c.參数指针本身为常量不可变(也无意义,由于char* Var也是形參)

    void function(char* const Var);

    d.參数为引用。为了添加效率同一时候防止改动。修饰引用參数时:

    void function(const Class& Var); //引用參数在函数内不能够改变

    void function(const TYPE& Var); //引用參数在函数内为常量不可变

    (2)const 修饰函数返回值
       能够阻止用户改动返回值。返回值也要对应的付给一个常量或常指针。

    4、const修饰成员函数

    const对象仅仅能訪问const成员函数。而非const对象能够訪问随意的成员函数。包含const成员函数;
    const对象的成员是不能改动的,而通过指针维护的对象确实能够改动的;
    const成员函数不能够改动对象的数据无论对象是否具有const性质

    编译时以是否改动成员数据为根据进行检查。

  • 相关阅读:
    Aria2任意文件写入漏洞
    webpack添加node_path不是('webpack' 不是内部或外部命令,也不是可运行的程序或批处理文件?)
    闭包的7种形式
    首页 多级展示
    velocity模板入门
    AngularJs 时间控件
    mybatis按时间条件搜索
    数据结构之线性表(双向循环链表)
    数据结构之线性表(链表)
    数据结构之线性表(顺序表)
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7374577.html
Copyright © 2011-2022 走看看