zoukankan      html  css  js  c++  java
  • C++学习,顶层const

      顶层:指针本身就是一个常量。

      底层:指针所指的对象是一个常量。

      指针类型既可以指顶层const,也可以是底层const,这一点和其它类型相比区别明显。

      int i =0;

      int *const p1 = &i; //不能改变p1的值,因为这是一个顶层const

      const int ci =42;     //不能改变ci的值,因为这是一个顶层const

      const int *p2 =&ci;  //允许改变p2的值,因为这是一个底层const

      const int *const p3 = p2;  //靠右边的是顶层const 左边的是底层const

      cosnt int &r = ci;   //用于声明引用的const都是底层const

    当执行拷贝操作时,顶层const不收影响,底层const的限制很多

      int *p = p3;  //错误,p3包含底层const的定义,而p没有

      p2 = p3;  //正确,P2和p3都是底层cnost

      p2 = &i;  //正确, int*能转换成 const int *

      int &r = ci;  //错误,普通的int&不能绑定到int 变量上

      const int &r2  = i;  //正确,const int &可以绑定到一个普通int上

    p3既是顶层const也是底层const,拷贝p3时可以不在乎它是一个顶层const,但是必须清楚它指向的对象得是一个常量。

  • 相关阅读:
    js 读取XML
    JavaScript DOM 交换节点笔记
    JDBC学习总结 -- JDBC 快速入门 教程
    SQL 语句易错点讲解
    JAVA 他人博客收藏 (To be continue)
    <<MYSQL必知必会>> 入坑指南
    OpenGL 纹理学习总结
    BZOJ 3456 NTT图的计数 容斥
    洛谷1002 容斥原理+dfs OR DP
    51nod1565 FFT
  • 原文地址:https://www.cnblogs.com/xingzhuan/p/10524184.html
Copyright © 2011-2022 走看看