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定义。也可以把顶层语义称为常量,把底层语义称为不能修改?

  • 相关阅读:
    php解析xml文件的方法
    while倒数阶乘的和
    菱形代码
    0929课堂随记
    0929作业
    0928练习作业
    HelloJava
    Java例题
    Hello World(本博客启程篇)
    vue 如何实现在函数中触发路由跳转
  • 原文地址:https://www.cnblogs.com/ijpq/p/15428278.html
Copyright © 2011-2022 走看看