mu_tou_man

导航

 

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);

 

  

posted on 2014-07-21 18:16  mu_tou_man  阅读(110)  评论(0编辑  收藏  举报