const浅析

 

前言

c++中使用到const的地方有很多, 而且const 本身也针对不同的类型可能有不同的含义, 比如对指针就有顶层和底层. 本节就是探讨关于C++中const的在不同的地方不同表现或含义.

const

关于const :

  • const修饰的对象一旦创建一般就不能改变, 所以对于const对象必须进行初始化.

    int i = 0; const int j;    // error. 必须进行初始化 const int j = 0;
  • 初始化时并不关心初始化对象的是const还是非const

    int i = 0; const int j = i;    // i 是非const也可以
  • const不能改变

    const int i = 0; i = 1;  // error const的对象一般不能进行修改
  • 引用对象的类型必须与其所引用对象的类型一致

    int i = 0; int &j = i; double &size = j; // error. size与j的类型不一致
    • 因为以上引用的规则, 所以const类型的引用只能被const的对象引用
    int i = 0; const int &size = i; int &j = size; // error. size的类型为const int, j的类型为 int. 两者并不匹配
    • 引用类型对应的例外

      int size = 0; const double &i = size; // size与i的类型虽然不一致, 但是因为const的原因使得等式成立

      原因 : 虽然i与size两者的类型并不一致, 但是初始化i时, 编译器会为size生成一个临时量(double j = size;), 然后i最终绑定在这个临时量上(const double &i = j ). i 之所以能绑定在一个临时量上, 还是因为

      关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信