zoukankan      html  css  js  c++  java
  • const in cpp

    const容易混乱的地方在于底层const和顶层const概念。以及const与新标准中constexpr的区分。

    顶层const和底层const

    int *const p1 = &i; // 顶层
    cosnt int ci = 42; // 顶层
    const int *p2 = &ci; //底层
    int const *p2 = &ci; //底层, effetive c++提示
    const int *const p3 = p2; //两层
    

    对此,effective c++给出一种好记的方法: 星号*左边是底层,星号*右边是顶层

    底层/顶层在拷贝时的差异

    int i = ci; //correct, ci是顶层const
    p2 = p3; //correct, p2和p3都具有底层const语义,可以拷贝
    

    const和constexpr

    constexpr仅对指针本身有效,即只能产生顶层const语义

    const int *p1 = nullptr;//底层
    constexpr int *p2 = nullptr;//顶层
    constexpr const int *p = &i;// 两层
    

    所以顶层const语义一般使用constexpr代替,而底层const语义使用const定义。也可以把顶层语义称为常量,把底层语义称为不能修改?

  • 相关阅读:
    第三章
    第二章
    第一章
    第九章 硬件抽象层:HAL
    第十章 嵌入式Linux的调试技术
    第八章 让开发板发出声音:蜂鸣器驱动
    第七章
    第六章
    第五章总结
    第四章 源代码的下载和编译
  • 原文地址:https://www.cnblogs.com/ijpq/p/15428278.html
Copyright © 2011-2022 走看看