zoukankan      html  css  js  c++  java
  • const

    const 可以理解为read-only

    在C中用于定义静态变量、修饰函数的参数或者返回值

    在C++中用于修饰函数的定义、定义类的成员函数

    一般而言const有以下几个作用:

    1.定义常量

    2.类型检查、保护被修饰的东西 void fun(const int i) 那么形参就是不可变的

    3.和宏定义一样 避免模糊的数字出现  const int MAX=255;

    4.为函数重载提供参考

      class A

      {

        void f(int i){......}

        void f(int i)const{......}上一个函数的重载

      }

    5.节省空间 避免不必要的内存分配:(const常量在程序运行过程中只有一份复制品)

      const double pi=2.1415926;//此时并未将pi放入只读存储器 

          double i=pi;//为pi分配内存 以后不再分配

      double j=pi;

    6.提高程序效率

      编译器通常不为普通const常量分配存储空间 而是将他们保存在符号表中 这使得它成为一个编译期间的常量 没有了存取与读内存的操作 效率得以提高

    二、  常指针

      const int *p;p可变,p所指向的对象不可变

      int const *p;同上

      int *const p; p不可变  p指向的对象可变

      const int *const p;p和p所指向的对象都不可变;

    三、常引用

         1、用于修饰普通变量的只读属性别名   

              int ival=1024; const int &ref=ival; ref就是ival的别名 但是ref的值已经不能修改了

        常引用初始化时可以直接赋非左值(左值就是可以取得地址  而常量就是非左值)

        const double & d=1.0;

        而非常引用就不可以直接赋非左值

        double &d =1.0;错误

       2. 用于函数形参   可以确保在函数内不会改变实参的值

        void fun(const int & b);

      

  • 相关阅读:
    【万丈高楼平地起 第一季 链表是怎样链成的】
    【笔记——ASP.NET基础知识(一)】
    【万丈高楼平地起 第二季 队列和栈】
    【没有银弹No Silver Bullet】
    【简单示例:数据库表转XML】
    【软件工程小知识】
    【总结——SQL Server中的数据类型】
    【总结—.Net Framework集合类】
    【笔记——ASP.NET基础知识(二)】
    【总结——ASP.NET对象】
  • 原文地址:https://www.cnblogs.com/mu-tou-man/p/3858958.html
Copyright © 2011-2022 走看看